移动零

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

示例:
输入: [0,1,0,3,12]
输出: [1,3,12,0,0]

说明:

1.必须在原数组上操作,不能拷贝额外的数组。

2.尽量减少操作次数。


public void MoveZeroes(int[] nums) {
    for(int i = 0;i<nums.Length;i++)
    {
        if(nums[i] != 0) continue;
        int j = i + 1;
        int target = j;
        for(;j<nums.Length;j++)
        {
            if(nums[j] == 0) continue;
            target = j;
            break;
        }

        if(target<nums.Length)
        {
            nums[i] += nums[target];
            nums[target] = nums[i] - nums[target];
            nums[i] -= nums[target];
        }
    }
}


public void MoveZeroes(int[] nums) {
    int index = 0;
    for(int i = 0;i<nums.Length;i++)
    {
        if(nums[i] != 0)
        {
            nums[index++] = nums[i];
        }
    }

    for(int i = index;i<nums.Length;i++)
    {
        nums[index++] = 0;
    }
}

首页 我的博客
粤ICP备17103704号