zoukankan      html  css  js  c++  java
  • 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;
         }
    }

  • 相关阅读:
    url参数中出现+、空格、=、%、&、#等字符的解决办法
    hybrid app、react-native 区别
    native app、web app、hybrid app、react-native 区别
    hybrid app 知识点
    使用过的bug跟踪系统
    移动端点击延迟的解决方案
    Java中的null
    类加载器 知识点
    hashcode 知识点
    stylus 知识点
  • 原文地址:https://www.cnblogs.com/ysmintor/p/7508635.html
Copyright © 2011-2022 走看看