31. next permutation
class solution:
def plusone(self, digits: list[int]) -> list[int]:
l=[1]
c=0if len(digits)==0:
return digits
cur=len(digits)-1
while cur+1:
if digits[cur]==9:
d1=digits[cur+1:]
digits=digits[:cur]
digits.extend(d1)
cur-=1
c=1else:
digits[cur]+=1
cur=-2
break
if cur==0 or cur==-1:
l.extend(digits)
digits=l
return digits
**主要思路:**想法比較簡單,當發現cur位置為9時擷取長度[:cur]以及[cur+1:],cur位置處置為0
runtime: 36 ms, faster than 88.65% of python3memory usage: 12.9 mb, less than 98.54%
if len(digits) == 0:
digits = [1]
elif digits[-1] == 9:
digits = self.plusone(digits[:-1])
digits.extend([0])
else:
digits[-1] += 1
return digits
runtime: 36 ms, faster than 88.65% of python3memory usage: 13.2 mb, less than 57.36% of python3
遞迴的方式:優點:**簡潔漂亮
缺點:空間複雜度會稍微大一點點
本題目標:輸入乙個list,求取該list的各個數字的各種排列組合的情況下僅大於本list的下一種組合方式思路:list從後往前查詢當nums[i-1] none:
"""do not return anything, modify nums in-place instead.
"""c=1
for i in range(len(nums)-1,0,-1):
if nums[i-1] < nums[i]:
vol=max(nums[i:])
cur=i
for j in range(i,len(nums)):
if nums[j]>nums[i-1] and nums[j]runtime: 36 ms, faster than 97.38% of python3
memory usage: 13.1 mb, less than 78.38%
LeetCode1 兩數之和 陣列
1 暴力破解法 1 兩個迴圈分別遍歷陣列的兩兩值 2 求和 目標值 3 返回索引 c 實現 class solution return b 時間複雜度 o n 注意 1 建立vector vector int nsize,const t t 建立乙個vector,元素個數為nsize,且值均為t 2...
LeetCode 1 兩數之和 陣列
題目描述 給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums...
LeetCode 1 兩數之和
給定乙個整數數列,找出其中和為特定值的那兩個數。你可以假設每個輸入都只會有一種答案,同樣的元素不能被重用。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1 2 7 9 所以返回 0,1 step 1 class solution object def tw...