2024/5/23 持续的雨令我些许低迷,逃了一节课。状态不佳,兴许太阳出来才会好吧。做题、
1、题目描述
2、逻辑分析
题目要求将所有0移动到数组的末尾,且保持非零元素的相对顺序,要求是原地对数组进行操作。
使用双指针即可破题,使用两个指针,右指针负责遍历,遍历到非零元素,就与左指针上的元素交换即可。
演示一下:
3、代码演示
public void moveZeroes(int[] nums) {
int n = nums.length, left = 0, right = 0;
// left 指向非零元素的下一个位置,right 用于遍历数组
while(right < n){
// 如果当前元素不是0
if(nums[right] != 0){
// 交换元素
int temp = 0;
temp = nums[left];
nums[left] = nums[right];
nums[right] = temp;
left++;
}
right++;
}
}