美文网首页
2020-02-07 刷题 2(数组)

2020-02-07 刷题 2(数组)

作者: nowherespyfly | 来源:发表于2020-02-07 18:46 被阅读0次

    66 加一

    思路很简单,从后向前扫描,如果当前位小于9,就加一然后退出循环,否则置零继续向前循环。最后判断一下第一位是不是0,是的话就在最前面插入1.
    代码:

    time: 79.93%, memory:5.37%
    class Solution {
    public:
    vector<int> plusOne(vector<int>& digits) {
        int dig_len = digits.size();
        for(int i = dig_len - 1; i >= 0; i--){
            if (digits[i] < 9){
                digits[i]++;
                break;
            }
            else
                digits[i] = 0;
        }
        if (digits[0] == 0)
            digits.insert(digits.begin(), 1);
        return digits;
    }
    };
    

    283 移动零

    题目要求将所有0移动到数组最后,其实可以反过来将不是0的移动到前面,最后将剩下的空置零。采用双指针法,一个记录当前非零数已经填充到哪里,一个记录当前扫描到哪里。
    标签: 数组,双指针
    代码:

    time: 94.83%, memory: 5.03%
    class Solution {
    public:
    void moveZeroes(vector<int>& nums) {
       int num_len = nums.size();
       int p = 0, q = 0;
       // move other elements to front
       for(;q < num_len; q++){
           if(nums[q] != 0){
               nums[p] = nums[q];
               p++;
           }
       }
       while(p < num_len){
           nums[p] = 0;
           p++;
       }
    }
    };
    

    相关文章

      网友评论

          本文标题:2020-02-07 刷题 2(数组)

          本文链接:https://www.haomeiwen.com/subject/qdfvxhtx.html