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 對偶數索引進行排序,當發現偶數索引出現奇數時,在奇數索引上尋找第乙...