Leetcode66.Plus One

一开始的解法

class Solution {
    public int[] plusOne(int[] digits) {
        /*
        0   :   1
        99  :   100
        19  :   20
        18  :   19
        
        3 kind
        
        reach to the end? stop x  wrong!
        reach to the end but carry == 1, resize new int[len + 1], the first element is 1
        reach to the end carry == 0, stop
        add carry (1st it's 1) to the cur element 
        
        if (cur == 10) {
            carry = 1;
        } else {
            stop and return
        }
        
        
        
        */
        int carry = 1;
        for (int i = digits.length - 1; i >= 0; i--) {
            digits[i] = (digits[i] + carry) % 10;
            
            if (digits[i] == 0) {
                carry = 1;
            } else {
                carry = 0;
                break;
            }
            
            if (i == 0 && carry == 1) {
                //  resize
                int[] ret = new int[digits.length + 1];

                ret[0] = 1;
                for (int k = 0, j = 1; k < digits.length && j < ret.length; k++, j++) {
                    ret[j] = digits[k];
                }

                digits = ret;
            }                
        }
        
    
        
        return digits;
    }
}

看到最快的答案惊了
当扫到最高位,依然需要进位时,直接int[] newArr = new [n + 1] 然后 newArr[0] = 1
return newArr;
就行了
因为其实,出现这种情况,意味着最高位后面的所有元素都是0!
不需要再重新for loop一遍,把原来的array中元素的值赋给新array了。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,768评论 0 33
  • 8086汇编 本笔记是笔者观看小甲鱼老师(鱼C论坛)《零基础入门学习汇编语言》系列视频的笔记,在此感谢他和像他一样...
    Gibbs基阅读 37,361评论 8 114
  • 数组是一种可变的、可索引的数据集合。在Scala中用Array[T]的形式来表示Java中的数组形式 T[]。 v...
    时待吾阅读 967评论 0 0
  • 在老师们总结高分学员的复习经验时,我们惊奇的发现,不管他们考上的是哪一所大学,用的是哪些复习方法,他们的习惯都有些...
    常小帅阅读 333评论 0 1
  • 诗成鬼泣冷血融, 寿因才折是夭龙。 不见黄金台上意, 秋老梧桐雪青松。
    鹤洺阅读 335评论 7 18