2024-03-26 09:16阅读: 8评论: 0推荐: 0

283. 移动零

283. 移动零

image-20240318104746131

自己的

思路是双指针,右指针用来找非零元素,找到后赋值给左指针,保证左指针的左面都是非零元素。遍历到最后,让左指针本身和右边全为零即可

class Solution {
public void moveZeroes(int[] nums) {
int i = 0;
int j = 0;
while(j < nums.length){
if(nums[j] != 0){
nums[i] = nums[j];
i ++;
}
j ++;
}
for(;i < nums.length; i ++)
nums[i] = 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;
}
}

同样是双指针解法,但官方用了交换元素

本文作者:清澈的澈

本文链接:https://www.cnblogs.com/lmc7/p/18095868

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   清澈的澈  阅读(8)  评论(0编辑  收藏  举报
评论
收藏
关注
推荐
深色
回顶
收起
点击右上角即可分享
微信分享提示