本着blabla的精神,在這裏(可能會)給出leetcode的所有習題答案 --持續更新中...數組
1.給定一個整數數組 nums
和一個目標值 target
,請你在該數組中找出和爲目標值的那 兩個 整數,並返回他們的數組下標。app
ps:這個好簡單,好容易理解aaa,,BUT是個反例,,執行用時超過限制...spa
class Solution: def twoSum(self, nums: List[int], target: int) -> List[int]: l = len(nums) for i in range(l): for j in range(l): if nums[i] + nums[j] == target and (not i == j): return (i,j)
下面系正確且耗時很是OK的解法code
class Solution: def twoSum(self, nums: List[int], target: int) -> List[int]: n = len(nums) lookup = {} for i in range(n): tmp = target - nums[i] if tmp in lookup: return [lookup[tmp], i] lookup[nums[i]] = i
3.給定一個字符串,請你找出其中不含有重複字符的 最長子串 的長度。blog
ps1:明明直接len(l)就已經解決了的,非要把l打印出來看着,用什麼left,right來計算最長子串長度,折騰了一天也沒計算明白,len(l)出來結果那一瞬間哭遼內存
ps2:內存消耗太大,等待修正中...字符串
class Solution: def lengthOfLongestSubstring(self, s: str) -> int: l = [] # 記錄遍歷過的字符 count = 0 # 記錄每個無重複字符的字串的長度 max_num = 0 # 記錄全部子串最長長度 if len(s) == 0: return 0 if len(s) == 1: return 1 for c in s: if c not in l: l.append(c) count = len(l) else: if l.index(c) == len(l): #若是是重複的字符爲列表中最後一個,例如abcc l = [].append(c) l = l[l.index(c) + 1 :] l.append(c) if count >= max_num: max_num = count return max_num