前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >leetcode-66-Plus One

leetcode-66-Plus One

作者头像
chenjx85
发布2019-03-14 17:19:06
3880
发布2019-03-14 17:19:06
举报
文章被收录于专栏:chenjx85的技术专栏

题目描述:

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

The digits are stored such that the most significant digit is at the head of the list, and each element in the array contain a single digit.

You may assume the integer does not contain any leading zero, except the number 0 itself.

Example 1:

代码语言:javascript
复制
Input: [1,2,3]
Output: [1,2,4]
Explanation: The array represents the integer 123.

Example 2:

代码语言:javascript
复制
Input: [4,3,2,1]
Output: [4,3,2,2]
Explanation: The array represents the integer 4321.

要完成的函数:

vector<int> plusOne(vector<int>& digits) 

说明:

1、这道题给定一个vector,里面装了几个个位数,这几个数形成了一个整数,比如[1,3,2,4],就是1324。要求把这个整数加一,然后把结果返回,还是返回这种格式的vector。

2、这道题很容易,我们最开始设定i=digits.size()-1,也就是最后一位,我们不断地判断digits[i]的数值是否为9,如果是,把这一位改为0,接着i--,继续判断前一位。

如果某一位不等于9了,那么我们结束循环,把这一位加一。如果一直跑完所有数值,都等于9,那么我们在最前面插入1。最后返回digits。

代码如下:

代码语言:javascript
复制
    vector<int> plusOne(vector<int>& digits) 
    {
        int i=digits.size()-1;
        while(digits[i]==9&&i>=0)//如果当前位为9,并且i>=0
        {
            digits[i]=0;//把当前位修改为0
            i--;//i=i-1
        }
        if(i==-1)//特殊状态,比如999这种
            digits.insert(digits.begin(),1);
        else//常见状态,比如299
            digits[i]++;
        return digits;
    }

上述代码实测4ms,beats 99.68% of cpp submissions。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-05-28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目描述:
  • 要完成的函数:
  • 说明:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档