leecode刷題第二天
1.今天的第一題,以前做過但是思路不完善有點錯誤。
這道題的思路主要是,先新建一個dict爲空,我們首先遍歷數組,將target-nums[i]看差值是否在dict中,如果不在則將nums[i]與鍵值i保存到dict中,
如果在dict中則將i與maps[target-nums[i]]返回,即爲要得到的下標,這道題最主要是假設了只有一個答案,所以可以不考慮有多種解的情況,以下是代碼:
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
maps={}
length=len(nums)
for i in range(length):
b=target-nums[i]
if b in maps.keys():
key=maps[b]
return [key,i]
else:
maps[nums[i]]=i
continue
2.今天的第二題:
這道題只要求求長度,題解是這樣的:
1.創建一個set
2.兩個指針,第一個指針指向字符串的開頭-j,第二個指針隨着for村換遍歷字符串-i
3.如果set裏沒有s[i],說明目前爲止還沒有重複的字符串,把s[i]添加到set裏,然後更新最大不重複字符的數量
4.如果set裏有s[i],則從set裏開始刪除s[j],並且遞增j,再檢查set裏是否有s[i],如此反覆直至set裏沒有s[i]爲止
5.重複步驟3和4,直到遍歷完整個字符串
代碼如下:
class Solution:
def lengthOfLongestSubstring(self, s: str) -> int:
a=set()
i=0
j=0
maxlength=0
length=len(s)
for i in range(length):
if s[i] not in a:
a.add(s[i])
maxlength=max(maxlength,len(a))
else:
while(s[i] in a):
a.remove(s[j])
j+=1
a.add(s[i])
return maxlength
今天摸摸魚,每天刷一刷!