您的位置:首页 > 其它

leetcode283~Move Zeroes

2017-03-08 17:30 316 查看
Given an array nums, write a function to move all 0’s to the end of it while maintaining the relative order of the non-zero elements.

For example, given nums = [0, 1, 0, 3, 12], after calling your function, nums should be [1, 3, 12, 0, 0].

Note:

You must do this in-place without making a copy of the array.

Minimize the total number of operations.

public class MoveZeroes {

//一个指针向前遍历  一个指针负责记录非0值
public void moveZeroes2(int[] nums) {
int p = 0;
int len = nums.length;
for(int i=0;i<len;i++) {
if(nums[i]!=0) {
nums[p] = nums[i];
p++;
}
}
for(int i=p;i<len;i++) {
nums[i] = 0;
}
}

//移动次数最少
public void moveZeroes(int[] nums) {
//指针j标记0值的位置
int j=0;
for(int i=0;i<nums.length;i++) {
//非0
if(nums[i]!=0) {
int tmp = nums[j];
nums[j] = nums[i];
nums[i] = tmp;
j++;
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: