码迷,mamicode.com
首页 > 其他好文 > 详细

66 plus one

时间:2020-01-29 12:44:58      阅读:82      评论:0      收藏:0      [点我收藏+]

标签:sim   e30   class   data   length   return   ber   tle   产生   

| 分类 leetcode? |

Given a non-negative number represented as an array of digits, plus one to the number.

The digits are stored such that the most significant digit is at the head of the list.

1

我的想法很简单,就是单纯的根据数字加1进行每位运算,和下面的代码差距在于没有过多的去想 暗示的一些条件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public int[] plusOne(int[] digits) {
if(digits == null || digits.length == 0) return null;
int carry = 1; for(int i = digits.length-1;i >= 0; i--){ digits[i] += carry; if(digits[i] >= 10){ digits[i] -= 10; carry = 1; }else{ carry = 0; break; } } if(carry == 1 ){ int[] tmp = new int[digits.length + 1]; for(int i = 0; i < digits.length; i++){ tmp[i+1] = digits[i]; } tm 大专栏  66 plus onep[0] = 1; return tmp; } return digits; }

2 most votes

根据 hello_today_zezedi 改的。 算法:从后往前遍历,如果数字为9,那么则该数字变为0,继续遍历下一个数字,如果不是9,那么该数字加1,返回digits; 只有数字是9 9 9 这类的才会产生新的进位。注意到除了进位,其他都为0。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public int[] plusOne(int[] digits) {
        if(digits == null || digits.length == 0) return null;
        for(int i = digits.length - 1; i >= 0; i--){
            if(digits[i] == 9){
                digits[i] = 0;
            }else{
                digits[i]++;
                return digits;
            }
        }
            int[] result =  new int[digits.length+1];
            result[0] = 1;
            return result;
    }


上一篇 ??? 下一篇

66 plus one

标签:sim   e30   class   data   length   return   ber   tle   产生   

原文地址:https://www.cnblogs.com/lijianming180/p/12239909.html

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