20.11.19 leetcode283

题目链接:https://leetcode-cn.com/problems/move-zeroes/submissions/

题意:给你一个包含若干个0的数组,要求把所有的0移动到后面,且保持其他数相对顺序不变。

分析:第一个方法是遇到0就把后一位移过来,最后还剩多少位为空就在空的位置补0

第二个方法是双指针,左指针指向已经处理好的尾部,右指针指向待处理头部,右指针一直往右遍历,遇到非0数就和左指针交换,同时左指针往右移动一格。

class Solution {
public:
    void moveZeroes(vector<int>& nums) {
        int n=nums.size();
        int left=0,right=0;
        while(right<n){
            if(nums[right]){
                swap(nums[left],nums[right]);
                left++;
            }
            right++;
        }
    }
};

 

posted @ 2020-11-19 10:53  清酒令  阅读(55)  评论(0)    收藏  举报