283.移动零
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
请注意 ,必须在不复制数组的情况下原地对数组进行操作。
思路:移动0,但我们不知道哪个是0,那么我们就假设nums[0]为0,如果不为0,就把0后移一位,最后在当前为0且后续全是0时补全。
代码实现:
class Solution {
public:
void moveZeroes(vector<int>& nums) {
int i0 = 0;
for(int i=0;i<nums.size();i++){
if(nums[i]!=0){
nums[i0++] = nums[i];
}
}
for(int i=i0;i<nums.size();i++){
nums[i] = 0;
}
}
};
时间复杂度:O(n)
空间复杂度:O(1)
浙公网安备 33010602011771号