• 66 plus one


    | 分类 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;
        }
    


    上一篇     下一篇
  • 相关阅读:
    事件记录
    C++和extern C
    中断控制器
    NAND FLASH控制器
    MMU实验
    存储管理器实验
    GPIO实验
    linux与Windows使用编译区别及makefile文件编写
    ubuntu如何为获得root权限
    VI常用命令及linux下软件
  • 原文地址:https://www.cnblogs.com/lijianming180/p/12239909.html
Copyright © 2020-2023  润新知