zoukankan      html  css  js  c++  java
  • 283. Move Zeroes

        /*
         * 283. Move Zeroes 
         * 12.7 by Mingyang 
         * 不用什么两个指针不指针的问题啦,一个一个慢慢来 需要把0换到后面去
         */
        public static void moveZeroes(int[] nums) {
            if (nums.length == 0 || nums == null)
                return;
            int start = -1;
            for (int i = 0; i < nums.length; i++) {
                // 找到第一个不是0的值,并且赋予start这个index
                if (nums[i] == 0 && start < 0) {
                    start = i;
                }
                if (nums[i] != 0 && start >= 0) {
                    swap(nums, i, start);
                    i = start;
                    start = -1;
                }
            }
        }    
        public static void swap(int A[], int i, int j) {
            int tmp = A[i];
            A[i] = A[j];
            A[j] = tmp;
        }
        // 哪里用什么换哦,没那么复杂啦,直接所有的前面全部填满,后面全部补0,不是换
        public void moveZeroes1(int[] nums) {
            int len=nums.length;
            int index=0;
            for(int i=0;i<len;i++){
                if(nums[i]!=0){
                    nums[index]=nums[i];
                    index++;
                }
            }
            for(int i=index;i<len;i++){
                nums[i]=0;
            }
        }
        // 我喜欢的思路,直接!两个指针
        public static void moveZeroes2(int[] nums) {
            if (nums.length <= 1)
                return;
            int first = 0;
            int sec = 0;
            while (sec < nums.length) {
                // find first zero element
                while (first < nums.length && nums[first] != 0) {
                    first++;
                }
                if (first == nums.length)
                    return;
                sec = first + 1;
                // find following first non-zero element
                while (sec < nums.length && nums[sec] == 0) {
                    sec++;
                }
                if (sec == nums.length)
                    return;
                swap(nums, first, sec);
            }
        }
  • 相关阅读:
    正则表达式的单行模式和多行模式
    js 正则匹配(去掉html标签)
    ES6中set和map的区别
    回调函数的使用场合
    javascript逻辑运算符“||”和“&&”
    [bzoj3210]花神的浇花集会
    [bzoj2438][中山市选2011]杀人游戏
    [bzoj2743][HEOI2012]采花
    [luoguP3729]曼哈顿计划EX
    [bzoj4850][Jsoi2016]灯塔
  • 原文地址:https://www.cnblogs.com/zmyvszk/p/5622726.html
Copyright © 2011-2022 走看看