移动零

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

示例:

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

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/move-zeroes                 https://leetcode.com/problems/move-zeroes
 

class Solution {
    public void moveZeroes(int[] nums) {
        //判断是否有零 
        //将nums[i]不等于零的元素移动到前面
        int j = 0 ;
        for (int i = 0 ; i< nums.length ; i++) {
           if (nums[i] != 0){
             nums[j] = nums[i];
              if(j != i ){
                nums[i] = 0;
              }
             j++; //在循环内执行
           }          
        }   
    }
}

 

public void moveZeroes(int[] nums) {
        if(nums == null || nums.length <=1)
            return;
        int last = -1;
        for(int i=0; i<nums.length; i++){
            if(nums[i] != 0){
                nums[++last] = nums[i];
                if(i != last)
                    nums[i]=0; 
            }
        }
    } 

 

 

 

class Solution {
    public void moveZeroes(int[] nums) {
        int pos = 0;
        for(int i = 0;i < nums.length;i++) {
            if(nums[i] != 0) {
                if(i != pos) {
                    nums[pos] = nums[i];
                    nums[i] = 0;
                }
                pos++;
            }
        }
    }
}

 

posted @ 2019-12-06 15:47  靡不有初_鲜克有终  阅读(128)  评论(0编辑  收藏  举报