每日一题:Leetcode283 移动零

简介: 每日一题:Leetcode283 移动零

题目描述

给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。

请注意 ,必须在不复制数组的情况下原地对数组进行操作


示例 1:

输入: nums = [0,1,0,3,12]

输出: [1,3,12,0,0]。


示例 2:

输入: nums = [0]

输出: [0]


提示:

1 <= nums.length <= 10^4
-2^31 <= nums[i] <= 2^31 - 1


一、思路

双指针:

慢指针用来记录一个新的数组索引的值,快指针用来确定新数组中的值,最后通过新数组和原数组的长度差,通过一个for循环逐个将后面的赋值为0


二、参考代码

双指针:

class Solution {
    public void moveZeroes(int[] nums) {
//     双指针
        int slow =0;
        int num = 0;
        for(int fast = 0;fast<nums.length;fast++){
            if(nums[fast] != 0){
                nums[slow++]=nums[fast];
                num++;
            }
        }
        for(int i = num;i<nums.length;i++){
            nums[i] = 0;
        }
    }
}


相关文章
|
9月前
|
索引
leetcode每日一题刷题打卡1700
leetcode每日一题刷题打卡1700
59 0
|
4月前
【LeetCode-每日一题】移动零
【LeetCode-每日一题】移动零
38 1
|
8月前
|
算法
力扣每日一题 6/6
力扣每日一题 6/6
55 3
|
8月前
|
Python
力扣每日一题 5/30
力扣每日一题 5/30
43 3
|
8月前
|
算法
力扣每日一题 6/10
力扣每日一题 6/10
68 1
LeetCode】每日一题(4)
LeetCode】每日一题(4)
54 0
【LeetCode】每日一题(3)
【LeetCode】每日一题(3)
80 0
|
算法 C语言 索引
每日一题:LeetCode-283. 移动零
每日一题:LeetCode-283. 移动零
|
算法
【LeetCode】每日一题(1)
【LeetCode】每日一题(1)
78 0
【LeetCode】每日一题(2)
【LeetCode】每日一题(2)
76 0