赞
踩
思路:利用双指针将数组分为三个区间,三个区间分别表示的是:非0元素、0、待处理元素
当arr[cur] != 0时
[0,dest]区间就需要加一,所以dest++
然后再交换arr[dest] ,arr[cur]
代码如下:
- class Solution {
- public void moveZeroes(int[] nums) {
- for(int cur = 0, dest = -1; cur < nums.length; cur++){
- //非 0 就让dest++,再交换数值
- if(nums[cur] != 0){
- dest++;
- int tmp = nums[dest];
- nums[dest] = nums[cur];
- nums[cur] = tmp;
- }
- }
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。