浙江网站建设公司推荐苏州软件开发
问题

实现思路
 
 
 
 
 
首先, 将dest指向-1 位置, cur指向下标为0 的位置, 在cur遍历的过程中:
1) 遇到非零元素则与下标dest+1 位置的元素交换,
2) 若遇到零元素则只继续cur遍历.
              
下标为1 的位置上是 非零元素 执行1) 交换得到右图结果 随后cur++ 得到下图结果
 
              
下标为2 的位置上是零元素 执行2)
 
         
下标为3 的位置上是非零元素 执行1) 交换得到右图结果 随后cur++ 得到下图结果
         
下标为4 的位置上是非零元素, 执行1) 交换得到右图结果

遍历结束, 实现要求
代码:
class Solution {public void moveZeroes(int[] nums) {int cur = 0, dest = -1;while(cur < nums.length) {if(nums[cur] == 0) {cur++;} else {swap(nums, cur, dest+1);cur++;dest++;}}}public void swap(int[] nums, int left, int right) {int tmp = nums[left];nums[left] = nums[right];nums[right] = tmp;return;}
} 
提交结果:

