LeetCode刷題 演算法篇

2022-07-10 17:21:10 字數 4284 閱讀 9912

暴力解法

class

solution:

def twosum(self, nums: list[int], target: int) ->list[int]:

i =0

while i

j = i+1

while j

if nums[i] + nums[j] ==target:

return

i,j j += 1i += 1

return none

class

solution:

#雜湊表實現

#雜湊表方法

#暴力解法

#先合併,再排序

def findmediansortedarrays(self, nums1: list[int], nums2: list[int]) ->float:

ans = nums1 +nums2

ans.sort()

n =len(ans)

if n%2 ==0:

return float((ans[n//2]+ans[(n//2)-1])/2)

else

:

return float(ans[n//2])

class

solution:

def findmediansortedarrays(self, nums1: list[int], nums2: list[int]) ->float:

#找到nums1和nums2固定範圍內的第t小的數,left1、right1、left2、right2為nums1和nums2的範圍。

deffind(left1,right1,left2,right2,t):

if left1 > right1: #

此時其中乙個陣列已經無用,返回另乙個陣列的第t即可

return nums2[left2+t-1]

elif left2 > right2: #

此時其中乙個陣列已經無用,返回另乙個陣列的第t即可

return nums1[left1+t-1]

if t == 1: #

兩陣列都存在的遞迴結束條件,找最小的乙個數

return

min(nums1[left1],nums2[left2])

numm = t//2 #

二分,向下取整,最多為t的一半

#處理其中乙個陣列範圍不足numm的情況,length表示判斷之後丟棄的數的個數

length1 = min(numm,right1-left1+1)

length2 = min(numm,right2-left2+1)

#判斷left+length-1的兩個元素大小,調整兩個陣列的範圍以及第幾小元素,進行遞迴

if nums1[left1+length1-1] <= nums2[left2+length2-1]:

return find(left1+length1,right1,left2,right2,t-length1)

else

:

return find(left1,right1,left2+length2,right2,t-length2)

m =len(nums1)

n =len(nums2)

#初始判斷,處理其中有乙個為空的情況

if m ==0:

if n%2 ==0:

return float((nums2[n//2]+nums2[(n//2)-1])/2)

else

:

return float(nums2[n//2])

if n ==0:

if m%2 ==0:

return float((nums1[m//2]+nums1[(m//2)-1])/2)

else

:

return float(nums1[m//2])

ans = 0.0

#分兩種情況討論返回

最長回文子串或最長對稱因子問題是在乙個字串中查詢乙個最長的連續的回文的子串,例如「banana」最長回文子串是「anana」。最長回文子串並不一定是唯一的,比如「abracadabra」,沒有超過3的回文子串,但是有兩個回文字串長度都是3:「ada」和「aca」。在一些應用中,我們求出全部的極大回文子串(不被其他回文串包含的回文子串)。

演算法小白 LeetCode刷題篇(一)

題目指路 題目描述 編寫乙個函式,以字串作為輸入,反轉該字串中的母音字母。示例 1 輸入 hello 輸出 holle 示例 2 輸入 leetcode 輸出 leotcede 思路一 比較菜的雙指標 兩邊的指標逐漸向中間逼近,直到兩指標重合跳出迴圈。兩指標移動的時候分為以下幾種情況 1.當左指標沒...

leetcode刷題 開始篇

第一道題 reverse words in a string.也就是說翻轉乙個字串的單詞。例如輸入為 hello world,it suck but i love it.輸出為 it love it but suck it world,hello 基本思路為 首先進行整個字串的reverse。然後對...

演算法 LeetCode刷題

given 1,3 2,6 8,10 15,18 return 1,6 8,10 15,18 關鍵就是a 1 b 0 也就是array i 1 1 array i 0 const merge array return array console.log merge 1,3 8,10 2,6 15,1...