283.移动零
class Solution {
// 移动零到数组末尾,同时保持非零元素的原有顺序
public void moveZeroes(int[] nums) {
int n = nums.length; // 数组长度
int left = 0, right = 0; // 双指针:left指向待替换位置,right用于遍历
while (right < n) { // 遍历整个数组
if (nums[right] != 0) { // 发现非零元素
swap(nums, left, right); // 将其交换到left的位置
left++; // 左指针右移,确保左侧都是已处理的非零元素
}
right++; // 右指针始终右移,继续探索未处理的元素
}
}
// 交换数组中两个元素的位置
private void swap(int[] nums, int left, int right) {
int temp = nums[left];
nums[left] = nums[right];
nums[right] = temp;
}
}

浙公网安备 33010602011771号