zoukankan      html  css  js  c++  java
  • LeetCode

    链接

    283. Move Zeroes

    题意

    给定一个数组,将其中所有的零移动至数组末尾,而非零数字的相对位置保持不变。
    要求:

    1. 就地移动
    2. 操作数最少

    思路

    方法1:先找到所有0的个数,然后直接将数组中非0元素一个一个插入,再根据0的个数补齐数组。
    方法2:来自讨论区,发现根本不需要计算0的个数。直接将非0元素一个一个插入,然后补齐0即可。

    代码

    Java 1:

    public class Solution {
        public void moveZeroes(int[] nums) {
            int count = 0;
            int index = 0;
            for(int i = 0; i < nums.length; i++) // 找所有0的个数
                if(nums[i] == 0) count++;
            if(count == nums.length) return;
            for (int i = 0; i < nums.length; i++) {
                if (nums[i] != 0) {
                    nums[index++] = nums[i];
                }
            }
            for(int i = nums.length - count; i < nums.length; i++) {
                nums[i] = 0;
            }
        }
    }
    // Your runtime beats 20.74 % of java submissions.
    

    Java 2:

    public void moveZeroes(int[] nums) {
        if (nums == null || nums.length == 0) return;        
    
        int insertPos = 0;
        for (int num: nums) {
            if (num != 0) nums[insertPos++] = num;
        }        
    
        while (insertPos < nums.length) {
            nums[insertPos++] = 0;
        }
    }
    // Your runtime beats 74.30 % of java submissions.
    
  • 相关阅读:
    HZOJ 太阳神
    HZOJ Silhouette
    HZOJ Dash Speed
    HZOJ 巨神兵
    值得纪念的cspsAFO总结
    11月FLAG
    模板易错总结
    树 总结
    DP总结(优化等)
    代码低级错误总结
  • 原文地址:https://www.cnblogs.com/zyoung/p/6773686.html
Copyright © 2011-2022 走看看