Leetcode1陣列練習

2021-09-24 05:43:27 字數 1664 閱讀 6077

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 python3

memory 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 python3

memory 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...