力扣 演算法練習 Python

2021-10-07 16:19:52 字數 1707 閱讀 7939

1.兩數之和

給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。

你可以假設每種輸入只會對應乙個答案。但是,陣列中同乙個元素不能使用兩遍。

示例: 給定 nums = [2, 7, 11, 15], target = 9 因為 nums[0] + nums[1] = 2 + 7

= 9 所以 返回 [0, 1]

思路:a+b=target => target-a=b

第一次嘗試

class

solution

(object):

deftwosum

(self, nums, target)

: l =

for i,n in

enumerate

(nums)

: r = target - n

if r in nums:

return l

# 沒有考慮乙個數不能使用兩遍

參考

class

solution

:def

twosum

(self,nums,target)

: n =

len(nums)

# 獲取nums的長度,是4

for x in

range

(n):

# 外層迴圈先取出下標0,對應著陣列裡的第乙個數字

for y in

range

(x+1

,n):

# 內層迴圈取出下標1,對應著陣列裡的第二個數字

if nums[x]

+ nums[y]

== target:

# 如果第乙個數字+第二個數字=target

return x,y # 上面的判斷是對的話,那麼就返回下標

break

# 並停止程式

else

:# 如果上面的條件不滿足的話,內層for迴圈就會繼續取出下標2進行判斷...如果都不滿足,那麼外層for迴圈就會取出下標1...依次類推

continue

sum/solution/wo-shi-pythoncai-ji-liang-shu-zhi-he-de-3ge-jie-fa/

第二次嘗試

class

solution

(object):

deftwosum

(self, nums, target)

:for x,n in

enumerate

(nums)

: r = target - n

if r in nums:

y = nums.index(r)

if x == y:

continue

else

:return x,y

break

總結:

a+b=target => target-a=b

enumerate() 獲取下標和值

index() 獲取下標

排除同乙個數使用兩次的情況

感覺還可以改進,想不出來了 =,=

力扣日常練習

給定乙個字串,驗證它是否是回文串,只考慮字母和數字字元,可以忽略字母的大小寫。說明 本題中,我們將空字串定義為有效的回文串。解題 根據題目需求首先過濾掉非字母和數字的字元,緊接著通過雙指標首尾遍歷字串,判斷是否回文即可。只需五行 即可。class solution 設計乙個支援 push,pop,t...

python可以做力扣的題嗎 力扣題目練習一

10.正規表示式匹配 給你乙個字串 s 和乙個字元規律 p,請你來實現乙個支援 和 的正規表示式匹配。匹配任意單個字元 匹配零個或多個前面的那乙個元素 所謂匹配,是要涵蓋 整個 字串 s的,而不是部分字串。說明 s 可能為空,且只包含從 a z 的小寫字母。p 可能為空,且只包含從 a z 的小寫字...

力扣演算法題

給定乙個整數陣列 nums 和乙個整數目標值 target,請你在該陣列中找出 和為目標值 的那 兩個 整數,並返回它們的陣列下標。但是,陣列中同乙個元素不能使用兩遍。思路一 暴力列舉 將陣列中的每個元素都拿來與後面的元素逐一相加,然後與目標值作比較,如果正確則直接返回下標值。那麼,就會有最壞的情況...