此题让自己做的很痛苦,本来一道leetcode上的easy题,当用两个指针求解时,却反复提交了n遍。
我想说,这个充分暴露的就是我们的基本功问题。
public class Solution {
public void moveZeroes(int[] nums) {
int p0 = 0, p1 = 0;
while (p0 < nums.length && p1 < nums.length) {
if (nums[p0] != 0) {
p0++;
continue;
}
if (nums[p1] == 0) {
p1++;
continue;
}
// while (nums[p0] != 0) {
// p0++;
// if (p0 >= nums.length) {
// return;
// }
// }
// while (nums[p1] == 0) {
// p1++;
// if (p1 >= nums.length) {
// return;
// }
// }
if (p0 < p1) {
int temp = nums[p0];
nums[p0] = nums[p1];
nums[p1] = temp;
p0++;
p1++;
} else {
p1++;
}
}
right
// for (int i = nums.length - 1; i >= 0; i--) {
// for (int j = 0; j < i; j++) {
// if (nums[j] == 0) {
// int temp = nums[j + 1];
// nums[j + 1] = nums[j];
// nums[j] = temp;
// }
// }
// }
}
}