题目描述:
把数组中的所有0移到数组的末尾,非零的数字保持顺序不变。
思路:
我的思路:
遍历,遇到0就erase掉,在末尾push一个0,并且标记当前的末尾0位置。
大佬的思路:
从头到尾,把当前的非零数字和i++位置交换。
代码:
我的:
class Solution {
public:
void moveZeroes(vector<int>& nums) {
vector<int>::iterator iter = nums.begin();
vector<int>::iterator iter2 = nums.end();
int cnt = 0;
while(iter != iter2) {
if (*iter == 0) {
nums.erase(iter);
nums.push_back(0);
cnt++;
iter2 = nums.end() - cnt;
}
else iter++;
}
}
};
大佬的:
class Solution {
public:
void moveZeroes(vector<int>& nums) {
int i = 0;
for (int j=0; j<nums.size(); ++j) {
if (nums[j] != 0) {
swap(nums[i], nums[j]);
i++;
}
}
}
};
明天就是4.30了…只要我不总结,这个月就没有结束…吧。