leetcode之 Move Zeros

来源:互联网 发布:ls plc编程软件下载 编辑:程序博客网 时间:2024/04/27 20:46

核心思路:这道题就是用两个变量 i 和 j , i 从头到尾遍历一遍, j 遇到数组为 0 的值就停下来,等到 i 移动到第一个不是零的地方将该值复制给数组在 j 的位置上。

附上C,C++和java三种语言的实现代码:

(C语言实现)

void moveZeroes(int* nums, int numsSize) {
    int j = 0;
    for(int i=0;i<numsSize;i++){
        if(nums[i]!=0){
            nums[j] = nums[i];
            j++;
        }
    }
    for(int i=j;i<numsSize;i++){
            nums[i] = 0;
        }
}

(C++实现)

class Solution {
public:
    void moveZeroes(vector<int>& nums) {
        if(nums.empty())
            return;
        int j = 0;
        for(int i=0;i<nums.size();i++){
            if(nums[i]!=0){
                nums[j] = nums[i];
                j++;
            }
        }
        for(int i=j;i<nums.size();i++){
            nums[i] = 0;
        }
    }
};

(java实现)

public class Solution {
    public void moveZeroes(int[] nums) {
        int j = 0;
        for(int i=0;i<nums.length;i++){
            if(nums[i]!=0){
                nums[j] = nums[i];
                j++;
            }
        }
        for(int i=j;i<nums.length;i++){
            nums[i] = 0;
        }
    }
}

0 0