python刷题技巧_【python刷题】分治法
歸并排序
def merge(le, ri):
res = []
i = j = 0
while i < len(le) and j < len(ri):
if le[i] < ri[j]:
res.append(le[i])
i += 1
else:
res.append(ri[j])
j += 1
res = res + le[i:] + ri[j:]
return res
def mergeSort(nums):
if len(nums) <= 1:
return nums
mid = len(nums) // 2
left = mergeSort(nums[:mid])
right = mergeSort(nums[mid:])
res = merge(left, right)
return res
nums = [6,2,1,5,4,3,2,2,7]
res = mergeSort(nums)
print(res)
leetcode 241 為運算表達式設計優先級
class Solution:
def diffWaysToCompute(self, input: str) -> List[int]:
res = []
n = len(input)
for i in range(n):
c = input[i]
if c == '+' or c == '-' or c == '*':
left = self.diffWaysToCompute(input[:i])
right = self.diffWaysToCompute(input[i+1:])
for a in left:
for b in right:
if c == '+':
res.append(a + b)
elif c == '-':
res.append(a - b)
elif c == '*':
res.append(a * b)
if len(res) == 0:
res.append(int(input))
return res
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的python刷题技巧_【python刷题】分治法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: unc 目录不受支持_Shopify平台
- 下一篇: qtextedit 默认文案_QText