网站分布,公众号开发者模式怎么关闭,简洁的企业网站源码,四川聚顺成网络科技有限公司给定一个数组 nums#xff0c;编写一个函数将所有 0 移动到数组的末尾#xff0c;同时保持非零元素的相对顺序。
请注意 #xff0c;必须在不复制数组的情况下原地对数组进行操作。 示例 1:
输入: nums [0,1,0,3,12]
输出: [1,3,12,0,0]示例 2:
输入: nums [0]
输出: […给定一个数组 nums编写一个函数将所有 0 移动到数组的末尾同时保持非零元素的相对顺序。
请注意 必须在不复制数组的情况下原地对数组进行操作。 示例 1:
输入: nums [0,1,0,3,12]
输出: [1,3,12,0,0]示例 2:
输入: nums [0]
输出: [0]
思路快慢指针快指针遍历把不是零的元素赋值给慢指针是零的跳过去。
快指针指向的元素如果不是零就把该元素赋值给慢指针快慢指针同时往后移动一个位置。
快指针指向的元素如果是零快指针往后移动一个位置慢指针不动。
快指针遍历完所有元素后再补零就行。
class Solution {
public:void moveZeroes(vectorint nums) {int fast0;int slow0;while(fastnums.size()){if(nums[fast]0){fast;}else{nums[slow]nums[fast];}}for(int islow;inums.size();i) //因为上面每赋值一次慢指针就会自动往后移动一个位置所以此时slow指针指向的是非零元素的下一个位置。{nums[i]0;}}
};