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

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++;
   }
}
};
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一、框架 1、Mac系统及常用工具、进制;C数据类型、常量变量、运算符、表达式、格式化输入输出 2、关系运算符、逻...
    师景福阅读 825评论 0 2
  • 线性表中的双指针法是指通过两个指针(游标)来指示线性表中的元素的方法。双指针的使用本身并没有什么神奇之处,但是通过...
    Like_eb56阅读 573评论 0 0
  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,670评论 0 5
  • 并不会快乐的。 刚毕业你会有上级。 几年后会有下级。 再过些年,会有客户。 他们都不会让你快乐的。 人和人之间是无...
    吉祥君jay阅读 522评论 1 11
  • 我是一条咸鱼。请不要吃惊,我不是变成了鱼魅在说话。人由阳归阴之后,也有反思自己生前的生活的,我们也是一样的。惭愧我...
    罗裕锋阅读 205评论 0 0

友情链接更多精彩内容