283. Move Zeroes@python
2024-08-30 15:47:36
Given an array nums
, write a function to move all 0
's to the end of it while maintaining the relative order of the non-zero elements.
Example:
Input: [,1,,3,12]
Output: [1,3,12,0,0]
原题地址: Move Zeroes
难度: Easy
题意:将数组内的0数移到数组末尾,非0值需要保证相对位置不变,比如上面例子中,非0值的顺序为 1, 3, 12 ,结果也得保证这个顺序
思路1:有点像冒泡,将数组0一个一个的移到末尾
代码描述:
循环{
如果值为0
循环{
当前值与下一个值交换
}
}
代码:
n = len(nums)
i = 0
while i < n:
if nums[i] == 0:
j = i
while j < n-1:
nums[j], nums[j+1] = nums[j+1], nums[j]
j += 1
n -= 1
i -= 1
i += 1
时间复杂度:O(n^2)
空间复杂度:O(1)
思路2:
先想一想,对数组进行一次遍历可以知道什么信息或者将数组改变成什么样子?
(1)可以找到任意一个数的位置(快排),存在数字交换
(2)找到最大(小)值(冒泡)
(3)统计各个数的个数
再看看快排(原地):
2 8 7 1 3 5 6
将4作为分割点
2 1 3 4 8 7 5 6
一次排序之后,元素的相对位置没有改变,可以模仿这种写法,将非0数都移到数组的前面
代码:
class Solution(object):
def moveZeroes(self, nums):
"""
:type nums: List[int]
:rtype: void Do not return anything, modify nums in-place instead.
"""
n = len(nums)
idx = -1
for i in range(n):
if nums[i] != 0:
idx += 1
nums[idx], nums[i] = nums[i], nums[idx]
时间复杂度:O(n)
空间复杂度:O(1)
最新文章
- android 帧动画,补间动画,属性动画的简单总结
- 【面试】shuffle函数的实现
- Python开发【第三篇】:Python基本之文件操作
- 9-this
- MongoDB上的索引
- 【Unity3D游戏开发】Application.systemLanguage无法区分简体中文和繁体中文 (二六)
- Oracle core05_事务和一致性
- 基于单个 div 的 CSS 画图
- 58 同城 iOS 客户端 iOS11 及 iPhone X 适配实践
- [poj3984]迷宫问题_bfs
- Python-包-65
- Django 反向解析
- 华硕ASUSPRO P5440UA笔记本电脑安装驱动
- fanuc 机床,加工中心通信总结,机床联网监控系统
- CSS3圆圈动画放大缩小循环动画效果
- 背景图宽高100%无法无法显示的问题【body设置relative,当前元素absolute】
- JAVA8函数式接口
- 剖析Hadoop和Spark的Shuffle过程差异
- 雷林鹏分享:jQuery EasyUI 表单 - 表单验证
- windows环境下安装Anaconda(Python)
热门文章
- SpringBoot第九篇:整合Spring Data JPA
- POJ2370【水题】
- .NET Core 跨平台物联网开发:设置委托事件(二)
- HDU - 6058 Kanade's sum
- Codeforces Round #408 (Div. 2) A
- 哈密顿图 BestCoder Round #53 (div.2) 1003 Rikka with Graph II
- vue文件中style标签的几个标识符
- getAttribute()方法的第二个参数
- Linux遗忘命令
- 外文翻译 《How we decide》多巴胺的预言 第一节