
力扣学习笔记——283. 移动零
解题思路
这题主要考察的是对题目的理解,使用双指针,什么时候交换?
- 当数字不为0时,进行交换
通过把不为0的数字移到左边,就可以实现题目效果,图解如下:
实现代码
class Solution {
public void moveZeroes(int[] nums) {
int n = nums.length, left = 0, right = 0;
while (right < n) {
if (nums[right] != 0) {
swap(nums, left, right);
left++;
}
right++;
}
}
public void swap(int[] nums, int left, int right) {
int temp = nums[left];
nums[left] = nums[right];
nums[right] = temp;
}
}
复杂度分析
- 时间复杂度:
O(N)
- 空间复杂度:
O(1)
- 感谢你赐予我前进的力量
赞赏者名单
因为你们的支持让我意识到写文章的价值🙏
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 zxb
评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果