LC——移动零
题目链接:https://leetcode-cn.com/leetbook/read/array-and-string/c6u02/
代码:
public void moveZeroes(int[] nums) {
int first = 0;
int last = 1;
while (last<nums.length){
if(nums[first] == 0 ){
if(nums[last]!= 0){
int temp = nums[first];
nums[first]= nums[last];
nums[last] = temp;
first++;
last++;
}else{
last++;
}
}else{
first++;
last++;
}
}
}
思路:
1.运用双指针,一个在后一个在前。
2.如果后面的指针指向0,并且前面的指针指向不为0,将前后数互换;如果前面的指向为0,后面的指针不变,前面的往前进1.
3.如果后面的指向不为0,都往前进1.
重构:
public static void moveZeroes(int[] nums) {
int first = 0;
int last = 0;
while (last<nums.length){
if(nums[last]!= 0){
int temp = nums[first];
nums[first]= nums[last];
nums[last] = temp;
first++;
}
last++;
}
}