leecode刷題第二天

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

今天摸摸魚,每天刷一刷!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章