283. Move Zeroes (Easy)
目录
把数组中的 0 移到末尾
题目描述
如题,把数组中的 0 移到末尾
统计
| 版本 | 耗时 | 超越 | 内存 | 超越 | 更新时间 |
|---|---|---|---|---|---|
| v 1.0.0 | 76ms | 44.89% | 36.9MB | 22.65% | 2020年06月22日20:17:00 |
想法 v 1.0.0
分析:把数组最终结果看成两个部分,一部分全是非 0,余下的尾部都是 0,先处理非 0,然后末尾补 0。
实现:题目中没有提到需要排序,所以只需要遍历一次原数组,把非 0 项从头开始重新插入,在末尾补 0,实现所谓的移动到末尾。
核心逻辑
- 使用下标
index来记录非0项 - 遍历原数组,当元素非
0时,把该元素赋值给nums[index], 然后index++ - 遍历结束后,如果
index< 原数组长度,则在末尾补上nums.length - index个0
复杂度分析
时间复杂度
- 遍历了一次原数组,
O(n) - 末尾补零遍历,
O(nums.length - index)- 最差情况原数组都是
0,index === 0,即O(n) - 最好情况原数组都非
0,index === nums.length,即O(0)
- 最差情况原数组都是
空间复杂度
只用了 1 个临时变量,所以是 O(1)级别
测试数据
[0,1,0,3,12]
[0,0,0]
[1,1,1]
AC 代码
2020年06月22日20:17:00
|
|
清风迅来