码迷,mamicode.com
首页 > 编程语言 > 详细

【LeetCode】数组-10(66)-数组表示的数加一

时间:2017-08-25 15:53:16      阅读:141      评论:0      收藏:0      [点我收藏+]

标签:[]   影响   复制   code   als   原来   申请   ++   --   

思路:

  只在digit数组的最后一位加一,如果加一产生进位则当前为减10并且修改进位变量使其在下一次循环的时候对下一位产生加一的影响,如果没有进位的产生直接break循环。

  最后判断如果最高位有进位,在重新申请数组(比原来数组长一位),把第一位设置为1,其他的把上面的数组复制过来即可。

【正确代码】

 1 class Solution {
 2     public int[] plusOne(int[] digits) {
 3         boolean carry = false;//设置进位
 4         digits[digits.length - 1]++;
 5         for (int i = digits.length - 1; i >= 0; i--) {
 6             digits[i] = digits[i] + (carry ? 1 : 0);
 7             if (digits[i] >= 10) {
 8                 carry = true;
 9                 digits[i] -= 10;
10             }else {
11                 carry = false;
12                 break;
13             }
14         }
15         //如果最高位有进位的话需要判断溢出
16         if (carry) {
17             int[] res = new int[digits.length + 1];
18             res[0] = 1;
19             for (int i = 1; i < digits.length; i++) {
20                 res[i] = digits[i];
21             }
22             return res;//注意这里res是局部变量,不能直接返回
23         }else {
24             return digits;
25         }     
26     }
27 }

复杂度分析:

  时间空间都是O(n)吧。

【LeetCode】数组-10(66)-数组表示的数加一

标签:[]   影响   复制   code   als   原来   申请   ++   --   

原文地址:http://www.cnblogs.com/StoneLuo/p/7428143.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!