LeetCode 283 移动零
问题描述:
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
双指针
执行用时:0 ms, 在所有 Java 提交中击败了100.00%的用户
内存消耗:39 MB, 在所有 Java 提交中击败了79.88%的用户
class Solution {
public void moveZeroes(int[] nums) {
if(nums==null || nums.length<=1) {
return;
}
//双指针
int p1 = 0, p2 = 0, tmp = 0;
//找到第一个0元素
while(p1<nums.length && nums[p1]!=0) {
p1++;
}
p2 = p1;
while(p2 < nums.length) {
//找到第一个0后的第一个非0元素
while(p2<nums.length && nums[p2]==0) {
p2++;
}
if(p2==nums.length) {
break;
}
//交换
tmp = nums[p2];
nums[p2] = nums[p1];
nums[p1] = tmp;
p1++;
p2++;
}
return;
}
}