62.移动零
题目内容:
代码及思路:
题目要求:1.不能创建额外的数据;
以下图栗子为例,利用双指针的方式,将第一个指针指向数组中的第一个0元素位置,第二个元素指向第一个非零元素位置。然后依次进行位置对换
#include<iostream>
#include<vector>
using namespace std;
class Solution {
public:
void moveZeroes(vector<int>& nums)
{
if (nums.size() == 0)
return;
int length = nums.size();
for (int p1 = 0, p2 = 0; p2 < length; p2++)
{
if (nums[p2] != 0)
{
int temp = nums[p1];
nums[p1] = nums[p2];
nums[p2] = temp;
p1++;
}
}
}
};
int main()
{
Solution* object = new Solution();
vector<int> nums;
int num;
char ch;
do
{
cin >> num;
nums.push_back(num);
cin.get(ch);
} while (ch == ',');
object->moveZeroes(nums);
for (int i = 0; i < nums.size(); i++)
{
cout << nums[i] << endl;
}
}