Leetcode刷題筆記

2021-09-23 18:44:04 字數 1509 閱讀 6329

1.兩數之和給定乙個整數陣列nums 和乙個目標值target,請你在該陣列中找出和為目標值的那兩個整數,並返回他們的陣列下標。ps:你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。

思路:用target減去nums中的每乙個數,並設立乙個字典來記錄對應的下標

class solution:

def twosum(self, nums, target):

#空字典用於儲存數值下標

#結果只有乙個,所以不用額外考慮

#由於加法/減法的對稱性,所以順序不是特別重要

d = {}

for index, num in enumerate(nums):

another_num = target - num

if another_num in d:

# 如果等式成立,就返回被減數的下標和減數的下標

return [d[another_num],index]

# 更新下標

d[num] = index

return none

注意:檢查某個key在不在字典中有兩種方法, *** in dict 或者 dict.get(***) is not none

2.無重複最長字串給定乙個字串,請你找出其中不含有重複字元的最長子串的長度。

思路:1.固定左邊界;2.記錄下標和內容;3.如何統計字串長度;4.在碰到重複字串時怎麼辦

res = 0

left = 0

char2index = {}

### 1、設定乙個左邊界

### 2、記錄字元出現的位置

### 3、什麼條件下需要計算長度

### 4、遇到重複字元怎麼更新位置,要更新到重複元素的下一位;如果下乙個剛好也是同樣的元素,就會快速更新

for index,char in enumerate(s):

if (char not in char2index) or (char2index[char] < left):

char2index[char] = index

res = max(res, index - left + 1)

else:

#遇到重複的字串,首先把左邊界挪一位

#然後更新該字元的位置

left = char2index[char] + 1

char2index[char] = index

擴充套件:給乙個數字,怎麼按照從高到低的位數返回乙個列表,比如num=32145,返回的是['3','2','1','4','5'],涉及到數字和字串的轉變

3.技巧

字串逆輸出 "12345" --> "54321" 用 str[::-1]即可

字典內部查詢鍵,用dict.get("目標鍵",目標鍵不在時的返回值)

LeetCode刷題筆記

實現strstr 給定乙個 haystack 字串和乙個 needle 字串,在 haystack 字串中找出 needle 字串出現的第乙個位置 從0開始 如果不存在,則返回 1。示例 1 輸入 haystack hello needle ll 輸出 2 示例 2 輸入 haystack aaaa...

LeetCode刷題筆記

給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。示例 輸入 2 4 3 5 6 4 輸出 ...

leetcode刷題筆記

兩個陣列的交集 兩個陣列的交集 ii class solution return ans 排序加雙指標 按奇偶排序陣列 ii class solution int temp a i a i a j a j temp return a 對偶數索引進行排序,當發現偶數索引出現奇數時,在奇數索引上尋找第乙...