• LeetCode刷题记录(5)—— 66.加一


    思路一:递归
    class Solution {
    public:
        vector<int> plusOne(vector<int>& digits) {
            return plusOneByOne(digits,digits.size()-1);
        }
        vector<int> plusOneByOne(vector<int>& digits,int pos){
            if(digits[pos]!=9){
                digits[pos]+=1;
                return digits;
            }else if(pos!=0){
                digits[pos]=0;
                return plusOneByOne(digits,pos-1);
            }else{
                digits[pos]=0;
                digits.insert(digits.begin(),1);
                return digits;
            }
        }
    };
    思路二:遍历(更优的时间空间复杂度)
    算法:
    • 从后向前,找到第一个不为9的数,该位+1,该位后的数均变为0;
    • 未找到的话,说明该数全为9,则返回 1 加 digits.size()个0
        int len=digits.size();
        for(int i=len-1;i>=0;i--){
            if(digits[i]!=9){
                digits[i]++;
                return digits;
            }else{
                digits[i]=0;
            }
        }
        digits.insert(digits.begin(),1);
        return digits;
  • 相关阅读:
    家庭记账本_2
    家庭记账本_1
    安卓学习进度_25
    安卓软件学习进度_24
    对体温上报app的总结
    安卓软件学习进度_23
    安卓软件学习进度_22
    安卓开发
    安卓开发
    安卓开发
  • 原文地址:https://www.cnblogs.com/esperanza/p/12206420.html
Copyright © 2020-2023  润新知