LeetCode小算法记录(二十九)移动零

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

示例:

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

说明:

  1. 必须在原数组上操作,不能拷贝额外的数组。
  2. 尽量减少操作次数。
package leetCodeTest;

import java.util.Arrays;

public class 移动零 {
    public static void main(String[] args) {
        int[] nums = new int[]{0,1,0,3,12};
        moveZeroes(nums);
        System.out.println("Arrays.toString(nums) = " + Arrays.toString(nums));
    }

    /**
     * 循环迭代的将0向后放置,并且有几个0就需要迭代几次,每次只能将一个零放入到最后
     * @param nums
     */
    public static void moveZeroes(int[] nums) {
        int i;
        int temp,count = 0;
        for (i=0;i<nums.length;i++){
            if (nums[i] ==0)
                count++;
        }
        while (count!=0){
            for (i=0;i<nums.length;i++){
                if (nums[i]==0 && i!=nums.length-1){
                    temp = nums[i];
                    nums[i] = nums[i+1];
                    nums[i+1] = temp;
                }
            }
            count--;
        }

    }
}
发布了100 篇原创文章 · 获赞 12 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/qq_31404603/article/details/105026775
今日推荐