5/2 每日一題
您將獲得一個表示為整數數組的大整數digits,其中每個digits[i]都是整數的數字。這些數字按從左到右的順序從最高有效位到最低有效位排序。大整數不包含任何前導的。ith0
將大整數遞增 1 並返回結果數組。
示例 1:
輸入: digits = [1,2,3] 輸出: [1,2,4] 解釋:數組表示整數 123。 遞增 1 得到 123 + 1 = 124。 因此,結果應該是 [1,2,4]。
示例 2:
輸入: digits = [4,3,2,1] 輸出: [4,3,2,2] 解釋:數組表示整數 4321。 遞增 1 得到 4321 + 1 = 4322。 因此,結果應該是 [4,3,2,2]。
示例 3:
輸入: digits = [9] 輸出: [1,0] 解釋:數組表示整數 9。 遞增 1 得到 9 + 1 = 10。 因此,結果應該是 [1,0]。
約束:
1 <= digits.length <= 1000 <= digits[i] <= 9digits不包含任何前導0的。
def plusOne(self, digits: List[int]) -> List[int]:
str_=[str(i) for i in digits]
str_digits=str(int("".join(str_))+1) #int object不能迭代
ans=[int(i) for i in str_digits]
return ans
-------------------------------------------
參考解答
直覺
方法
複雜
時間複雜度:
O(n)空間複雜度:
O(1) 平均,O(n+1) 更差
代碼
class Solution:
def plusOne(self, digits: List[int]) -> List[int]:
sums = digits[-1] + 1
carry = 1 if sums > 9 else 0
digits[-1] = 0 if sums > 9 else sums
for i in range(len(digits)-2, -1, -1):
if digits[i] + carry > 9:
carry = 1
digits[i] = 0
else:
digits[i] = digits[i] + carry
carry = 0
if carry == 1:
digits.append(1)
return digits[::-1]
return digits標籤: leetcode

0 個意見:
張貼留言
訂閱 張貼留言 [Atom]
<< 首頁