题意:给定一个数组,把非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)