题目
解法1:
将非0元素全部按顺序放到数组前面,后面的位置填充0
class Solution {
public:void moveZeroes(vector<int>& nums) {
int ind = 0;for(int i=0;i<nums.size();i++){
if(nums[i] != 0){
nums[ind] = nums[i];ind += 1;}}for(int i=ind;i<nums.size();i++){
nums[i] = 0;}}
};
解法2:双指针
这种解法一个指针始终指向要交换的位置,另一个指针指向需要被交换的非0元素的位置
class Solution {
public:void moveZeroes(vector<int>& nums) {
int i = 0, j = 0;while(i < nums.size() && j < nums.size()){
if(nums[j] != 0){
swap(nums[i],nums[j]);i++;j++;}else{
j++;}}}
};