zoukankan      html  css  js  c++  java
  • 66. Plus One

    66. Plus One

    Given a non-negative integer represented as a non-empty array of digits, plus one to the integer.

    该题目要求:将一整数按位存储在vector中,对其实现+1操作,返回结果.
    对存储序列vector中元素,倒序遍历,末位+1,若<10可直接返回,否则,保存进位加之到下一位,循环至最高位.
    若此时,进位依然为1,则新建长度增一的vector首位为1,其余为0,返回即可.

    (O(n)) time, (O(1)) space.
    他人思路, 自己的代码:

    vector<int> plusOne(vector<int>& A) {
        int n = A.size();
        if (A[n - 1] + 1 < 10) {
            A[n - 1] += 1;
            return A;
        } else A[n - 1] = 0;
    
        //最后一位有为10
        int i;
        for (i = n - 2; i >= 0; i--) {
            A[i] += 1; //倒数第二位+1
            if (A[i] == 10) A[i] = 0;
            else return A;
        }
    
        // 若循环执行完,仍没return,
        // 则另建一个vector,长度为n+1,首位为1,其余n为为0,并返回
        vector<int> B;
        B.push_back(1);
        for (i = 0; i < n; i++)
            B.push_back(0);
        return B;
    }
    

    人家更牛逼的代码:

    vector<int> plusOne(vector<int> &digits) {
        int n = digits.size();
        for (int i = n - 1; i >= 0; --i) {
            if (digits[i] == 9) digits[i] = 0;
            else {
                digits[i]++;
                return digits;
            }
        }
    
        // 很牛逼的样子
        digits[0] = 1;
        digits.push_back(0);
        return digits;
    }
    
  • 相关阅读:
    关于session
    bootstrap的栅格系统
    js小知识点
    js获取div基础元素
    fixed固定元素
    定时器之延时触发鼠标悬浮事件
    Comparator分组测试
    List去重比较
    点击事件和双击事件
    开机自启动
  • 原文地址:https://www.cnblogs.com/ZhongliangXiang/p/7356981.html
Copyright © 2011-2022 走看看