Leetcode 283. 移动零
题目描述:给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
示例:
输入: [0,1,0,3,12]
输出: [1,3,12,0,0]
说明:
- 必须在原数组上操作,不能拷贝额外的数组。
- 尽量减少操作次数
解题思路:
遍历数组,先找到数组中不为0的数,然后在将数组剩余位置置0
#include<iostream>
#include<vector>
using namespace std;
class Solution {
public:
void moveZeroes(vector<int>& nums) {
int k = 0;
int len = nums.size();
for (int i = 0; i < len;i++)
{
if(nums[i]!=0)
{ nums[k] = nums[i];
k++;}
}
for (int j = k; j < len;j++)
nums[j] = 0;
}
};
int main() {
vector<int> array;//定义一个vector数组array
int number;
while (1) {
cin >> number;
array.push_back(number);
if (cin.get() == '\n')
break;
}
Solution sl;
sl.moveZeroes(array);
for (int i = 0; i < array.size();i++)
cout << array[i] << " ";
return 0;
}