Leetcode加一 (java、python3)

加一

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

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

你可以假設除了整數 0 之外,這個整數不會以零開頭。

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.

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

示例 1:

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

示例 2:

輸入: [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即可。

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型
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章