题意:给定一个数组,把非0元素放在前面,把0放在后面,而且要确保相对位置不变
https://leetcode.com/problems/move-zeroes/description/
添加链接描述
解法:同向双指针。不能用对撞双指针的方法是因为需要确保相对顺序
class Solution {
public:
void moveZeroes(vector<int>& nums) {
int i = 0;
for(int j = 0; j < nums.size(); j++) {
if(nums[j] != 0) {
nums[i] = nums[j];
i++;
}
}
for(int k = i; k < nums.size(); k++) {
nums[k] = 0;
}
}
};
时间复杂度
O
(
n
)
O(n)
O(n)
空间复杂度
O
(
1
)
O(1)
O(1)