leetcode.数组.283移动零-Java

1. 具体题目

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

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

说明:

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

2. 思路分析

设置两个指针,zeroHead 始终指向 0 开始的地方,另一个指针遍历整个数组,遇到非 0 数,则将该数组元素值与 zeroHead 处数组元素值(0)交换。

3. 代码

 1 public void moveZeroes(int[] nums) {
 2         int zeroHead = 0;
 3         for(int i = 0 ;i < nums.length; i++){
 4             if(nums[zeroHead] != 0){
 5                 zeroHead++;
 6             }else{
 7                 if(nums[i] != 0){
 8                     int temp = nums[zeroHead];
 9                     nums[zeroHead] = nums[i];
10                     nums[i] = temp; 
11                     zeroHead++;
12                 }
13             } 
14         }
15     }

 

posted @ 2019-11-16 21:14  les111ley  阅读(202)  评论(0)    收藏  举报