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;
    }
    
  • 相关阅读:
    Java读写锁(ReentrantReadWriteLock)学习
    水平拆分和垂直拆分理解(未完)
    MySQL 主从复制
    sharding-JDBC 实现读写分离
    Linux查看程序端口占用情况
    sharding-jdbc 实现分表
    MySQL explain
    MySQL的七种join
    MySQL建立高性能索引策略
    Nginx企业级优化
  • 原文地址:https://www.cnblogs.com/ZhongliangXiang/p/7356981.html
Copyright © 2011-2022 走看看