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

  • 相关阅读:
    Linux中配置Aria2 RPC Server
    Ubuntu无法进入Windows的NTFS分区
    Visualbox在UEFI模式下无法正常引导
    pacman安装软件包出现损坏
    Windows下禁用锁屏热键WinKey+L
    Linux中无权限使用sudo
    Windows 10 MBR转GPT
    oh-my-zsh的安装与基本配置
    Raspbian开启root账户
    xrandr: 命令行修改分辨率工具
  • 原文地址:https://www.cnblogs.com/ysmintor/p/7508635.html
Copyright © 2011-2022 走看看