摘要:逐步逼近法,類似于牛頓迭代法。重點(diǎn)是找到規(guī)律,然后將規(guī)律加以表示。動(dòng)態(tài)規(guī)劃,相鄰兩個(gè)位置之間的關(guān)系。字符串的疊加,可以增加共性,通過(guò)相減可以得到邊界位置處符合規(guī)律的要求。學(xué)會(huì)將問(wèn)題轉(zhuǎn)化為可求的邊界問(wèn)題。
吃透題目:
任何問(wèn)題的解決在于理解題目,挖掘本質(zhì)。 這道題目,從一個(gè)string中找包含char的最小子序列,O(n),要求只能遍歷一遍。 每次移動(dòng)一個(gè)index,都嘗試找子序列,通過(guò)對(duì)目標(biāo)子序列統(tǒng)計(jì)數(shù)目,與當(dāng)前的char的數(shù)目進(jìn)行合并,然后子循環(huán)while的時(shí)候,通過(guò)減法操作,達(dá)到==0的條件時(shí)候,就可以知道這是最短的子序列的邊界,同理for循環(huán)向后迭代。
相似: kmp算法,保持狀態(tài),省略不必要的遍歷,從上次移動(dòng)到的位置i,繼續(xù)向后移動(dòng)。
逐步逼近法,類似于牛頓迭代法。重點(diǎn)是找到規(guī)律,然后將規(guī)律加以表示。 動(dòng)態(tài)規(guī)劃,相鄰兩個(gè)位置之間的關(guān)系。
應(yīng)用:
學(xué)會(huì)記錄狀態(tài),沒(méi)有必要再次重復(fù)的位置,通過(guò)記錄加以過(guò)濾。 字符串的疊加,可以增加共性,通過(guò)相減可以得到邊界位置處符合規(guī)律的要求。 學(xué)會(huì)將問(wèn)題轉(zhuǎn)化為可求的邊界問(wèn)題。
import collections class Solution: def minWindow(self, s, t): """ :type s: str :type t: str :rtype: str """ missing=len(t) need=collections.Counter(t) i=I=J=0 # J=len(s) for j,c in enumerate(s,1): missing-=need[c]>0 need[c]-=1 if not missing: # tmp1=s[i] # tmp3=need[s[i]] # tmp2=need[s[i]] < 0 while (i=0 and j-i<=J-I) or J==0: I=i J=j # print("I,J==>",I,J) return s[I:J] if __name__=="__main__": S = "ADOBEBCBODEBBANNNNACB" T = "ABC" S="ab" T="a" # S="a" # T="aa" st=Solution() out=st.minWindow(S,T) print("out==>",out)
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/44744.html
LeetCode[76] Minimum Window Substring Given a string S and a string T, find the minimum window in S whichwill contain all the characters in T in complexity O(n). For example, S = ADOBECODEBANC T = AB...
摘要:使用而不是因?yàn)槲覀冃枰氖亲钪?,中間值我們不在乎,所以一次收斂到最小。下面來(lái)三個(gè)需要查重并且記錄上次出現(xiàn)的位置,選擇以為例,走到用做檢查,發(fā)現(xiàn)出現(xiàn)過(guò),把移到的下一個(gè)。是上個(gè)題目的簡(jiǎn)易版,或者特殊版。 這里聊一聊解一類問(wèn)題,就是滿足某一條件的substring最值問(wèn)題。最開(kāi)始我們以Minimum Window Substring為例,并整理總結(jié)leetcode里所有類似題目的通解。 Gi...
摘要:自動(dòng)簡(jiǎn)歷項(xiàng)目介紹一個(gè)可以自動(dòng)播放書(shū)寫過(guò)程簡(jiǎn)歷,主要運(yùn)用原生和的知識(shí)點(diǎn)。方法如果展示窗口設(shè)置的是或者會(huì)自動(dòng)拉到底部為滾動(dòng)至底部為滾動(dòng)至頂部其他參數(shù)可選定義緩動(dòng)動(dòng)畫(huà),或之一。增加簡(jiǎn)歷展示頁(yè)編寫增加編寫簡(jiǎn)歷內(nèi)容的展示窗口。 自動(dòng)簡(jiǎn)歷 項(xiàng)目介紹 一個(gè)可以自動(dòng)播放書(shū)寫過(guò)程簡(jiǎn)歷,主要運(yùn)用原生JS和CSS3的知識(shí)點(diǎn)。 用到的庫(kù): prism marked 相關(guān)鏈接 預(yù)覽點(diǎn)我 源碼點(diǎn)我show...
摘要:自動(dòng)簡(jiǎn)歷項(xiàng)目介紹一個(gè)可以自動(dòng)播放書(shū)寫過(guò)程簡(jiǎn)歷,主要運(yùn)用原生和的知識(shí)點(diǎn)。方法如果展示窗口設(shè)置的是或者會(huì)自動(dòng)拉到底部為滾動(dòng)至底部為滾動(dòng)至頂部其他參數(shù)可選定義緩動(dòng)動(dòng)畫(huà),或之一。增加簡(jiǎn)歷展示頁(yè)編寫增加編寫簡(jiǎn)歷內(nèi)容的展示窗口。 自動(dòng)簡(jiǎn)歷 項(xiàng)目介紹 一個(gè)可以自動(dòng)播放書(shū)寫過(guò)程簡(jiǎn)歷,主要運(yùn)用原生JS和CSS3的知識(shí)點(diǎn)。 用到的庫(kù): prism marked 相關(guān)鏈接 預(yù)覽點(diǎn)我 源碼點(diǎn)我show...
閱讀 3169·2021-11-22 15:29
閱讀 1831·2021-10-12 10:11
閱讀 1889·2021-09-04 16:45
閱讀 2441·2021-08-25 09:39
閱讀 2858·2021-08-18 10:20
閱讀 2614·2021-08-11 11:17
閱讀 509·2019-08-30 12:49
閱讀 3389·2019-08-30 12:49