美文网首页
LeetCode283 移动零

LeetCode283 移动零

作者: No_七 | 来源:发表于2020-04-30 17:07 被阅读0次

    283. 移动零

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

    示例:

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

    必须在原数组上操作,不能拷贝额外的数组。
    尽量减少操作次数。

    public class LeetCode283 {
    
        public static void main(String[] args) {
    
            int[] nums = new int[]{0, 1, 0, 3, 12};
            int[] result = moveZeroes4(nums);
            for (int i = 0; i < result.length; i++) {
                System.out.print(result[i] + ",");
            }
        }
    
        /**
         * 思路一
         *
         * @param nums
         * @return
         */
        public static int[] moveZeroes1(int[] nums) {
            int[] tmps = new int[nums.length];
            int k = 0;
            for (int i = 0; i < nums.length; i++) {
                if (nums[i] != 0) {
                    tmps[k] = nums[i];
                    k++;
                }
            }
            for (int i = k; i < nums.length; i++) {
                tmps[i] = 0;
            }
            return tmps;
        }
    
        /**
         * 思路二
         *
         * @param nums
         * @return
         */
        public static int[] moveZeroes2(int[] nums) {
            for (int i = 0, j = 0; i < nums.length; i++) {
                if (nums[i] != 0) {
                    int tmp = nums[i];
                    nums[i] = nums[j];
                    nums[j] = tmp;
                    j++;
                }
            }
            return nums;
        }
    
        /**
         * 思路三
         *
         * @param nums
         * @return
         */
        public static int[] moveZeroes3(int[] nums) {
            int k = 0;
            for (int i = 0; i < nums.length; i++) {
                if (nums[i] != 0) {
                    nums[k] = nums[i];
                    k++;
                }
            }
            for (int i = k; i < nums.length; i++) {
                nums[i] = 0;
            }
            return nums;
        }
    
        /**
         * 思路四
         *
         * @param nums
         * @return
         */
        public static int[] moveZeroes4(int[] nums) {
            int k = 0;
            for (int i = 0; i < nums.length; i++) {
                if (nums[i] != 0) {
                    if (i != k) {
                        nums[k] = nums[i];
                    }
                    k++;
                }
            }
            for (int i = k; i < nums.length; i++) {
                nums[i] = 0;
            }
            return nums;
        }
    
    }
    

    相关文章

      网友评论

          本文标题:LeetCode283 移动零

          本文链接:https://www.haomeiwen.com/subject/pqltghtx.html