Leetcode加一 (java、python3)

加一

給定一個由整數組成的非空數組所表示的非負整數,在該數的基礎上加一。java

最高位數字存放在數組的首位, 數組中每一個元素只存儲一個數字。python

你能夠假設除了整數 0 以外,這個整數不會以零開頭。git

Given a non-empty array of digits representing a non-negative integer, plus one to the integer.數組

The digits are stored such that the most significant digit is at the head of the list, and each element in the array contain a single digit.bash

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

示例 1:指針

輸入: [1,2,3]
輸出: [1,2,4]
解釋: 輸入數組表示數字 123。
複製代碼

示例 2:code

輸入: [4,3,2,1]
輸出: [4,3,2,2]
解釋: 輸入數組表示數字 4321。
複製代碼

java:

class Solution {
    public int[] plusOne(int[] digits) {
        for( int i=digits.length;i>=0;i--){
            if(digits[i]+1==10){
                digits[i]=0;
            }else {
                digits[i]+=1;
                break;
            }
        }
        if(digits[0]==0){
            int[] digits2=new int[digits.length+1];
            digits2[0]=1;
            return  digits2;
        }else {
            return digits;
        }
    }
}
複製代碼

思路:

​ 指針從最後往前移動,若值爲10逐個加一,並賦值0。不等於10則退出循環。首位若是爲是0則證實須要進一。這裏新建一個長度比原數組大一。只需首位賦值1便可。cdn

python3:

class Solution:
    def plusOne(self, digits: List[int]) -> List[int]:
        """ :type digits:int :return: int """
        num = 0
        for i in range(len(digits)):
            num = num*10 + digits[i]
        return [int(i) for i in str(num+1)]

複製代碼

python3則能夠有不少實現方法,能夠像以上java那種。圖片

能夠把數組digits倒置,reversed(digits)而後逐項加1,最後若是爲0,則直接對數組下一項賦值1(python3數組可動態擴展)。最後返回倒置數組。

再就是如上轉換成string方式。先把數組轉成一個數字,而後加一,最後轉換字符串逐個輸出char字符並強制轉換int型

在這裏插入圖片描述
相關文章
相關標籤/搜索