zoukankan      html  css  js  c++  java
  • OJ练习17——T66 Plus One

    用单个保存的数字表示一个十进制数,实现+1操作。

    保存的第一个数一定要是有意义的(非零)。

    【思路】

    很容易想到把保存的数字转换为实际十进制数,然后+1,再按原格式保存,但很明显有超范围数据如何表示的问题。

    比如9876543210.(试过用long long类型也放不下?)

    所以要考虑几种情况:

    1.个位数字不是9,直接在个位数+1;

    2.个位数字是9,对于数据位数>1的,从后向前遍历每位数,遇到不是9的就+1,break;

    在此之前是9的就变0。

    如果改变后最大位是0,则最大位变1,再在最后push_back一个0;

    3.如果只有一位数且是9,则变1,0. 这种情况是运行后增加的。开始容易忽略。

    【my code】

    vector<int> plusOne(vector<int>& digits) {
        int n=digits.size();
        if(digits[n-1]!=9)
            digits[n-1]++;
        else
        {
        for(int i=n-1; i>=0; i--){
            if(digits[i]!=9){
                digits[i]++;
                break;
            }
            else
                digits[i]=0;
        }    
        }
        
        if(digits[0]==0){
            digits[0]=1;
            digits.push_back(0);
        }
        if(n==1&&digits[0]==9)
        {
            digits[0]=1;
            digits.push_back(0);
        }
        return digits;
        }

    【other code】

    用另外的vector把原vector反过来保存,再从前向后判断,如果长度增1,就push_back(1)

    vector<int> plusOne(vector<int> &digits) {
            // Start typing your C/C++ solution below
            // DO NOT write int main() function
            vector<int> ret(digits);
            reverse(ret.begin(), ret.end());
            
            int flag = 1;
            for(int i = 0; i < ret.size(); i++)
            {
                ret[i] += flag;
                flag = ret[i] / 10;
                ret[i] %= 10; 
            }
            
            if (flag == 1)
                ret.push_back(1);
            
            reverse(ret.begin(), ret.end());
            
            return ret;
        }

    评价:人家的代码总是很短_(:зゝ∠)_ 不过我的那个循环还是可读性很强的!握拳】

    ps:

    今天做的两道题目都很不顺畅,今天的状态也很不正常╮(╯﹏╰)╭

  • 相关阅读:
    [纯C#实现]基于BP神经网络的中文手写识别算法
    【转载】Jedis对管道、事务以及Watch的操作详细解析
    redis 缓存用户账单策略
    redis 通配符 批量删除key
    explain分析sql效率
    mysql 常用命令大全
    【转载】实战mysql分区(PARTITION)
    mysql表名忽略大小写配置
    【转】微服务架构的分布式事务解决方案
    【转载】Mysql中的Btree与Hash索引比较
  • 原文地址:https://www.cnblogs.com/ketchups-notes/p/4431318.html
Copyright © 2011-2022 走看看