• LeetCode: 66. Plus One


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

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

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


    本题目是要处理数字串,但实际上直观的想法是转换为int然后相加再转回array。这样做实际上会碰到int的最大可表示,在Java平台是带符号的范围-232-232-1,如果一个串超过32位,又不能这样处理。所以从串的结构和题目要求出发去思考。


    1.如果不是999这样的,那么加1并不会进位,也就是不需要生成新的串,直接修改原串。

    2.如果是9在个位,加1进位,判断十位时再进行这样的判断,所以用循环来处理。


    Java solution:


    class Solution {
         public int[] plusOne(int[] digits) {
             int length = digits.length;
            
             for(int i = length - 1; i>=0; i--){
                 if (digits[i] < 9){
                     digits[i]++;
                     return digits;
                 }
                
                 digits[i] = 0;
             }
            
             int[] newDigits = new int[length+1];
             newDigits[0] = 1;
             return newDigits;
         }
    }

  • 相关阅读:
    剑指offer 二叉树中和为某一个值的路径
    剑指offer 二叉搜索树的后序遍历序列
    二叉树
    剑指offer 二叉树的层序遍历
    剑指offer 二叉树的镜像
    二叉树的子结构
    牛客网 斐波那契数列
    NMT 机器翻译
    剑指offer 从尾到头打印链表
    剑指offer 链表中倒数第k个节点
  • 原文地址:https://www.cnblogs.com/ysmintor/p/7508635.html
Copyright © 2020-2023  润新知