LeetCode習題常見考點

2021-10-06 11:10:05 字數 1974 閱讀 3411

# 對於給定list a

for j in

range(1

,len

(a)+1)

:for i in

range

(j):

)

結果在ans中

# 雜湊集合,記錄每個字元是否出現過

occ =

set(

)n =

len(s)

# 右指標,初始值為 -1,相當於我們在字串的左邊界的左側,還沒有開始移動

rk, ans =0,

0for i in

range

(n):

if i !=0:

# 左指標向右移動一格,移除乙個字元

occ.remove(s[i -1]

)while rk < n and s[rk]

notin occ:

# 不斷地移動右指標

occ.add(s[rk]

) rk +=

1# 第 i 到 rk 個字元是乙個極長的無重複字元子串

ans =

max(ans, rk - i)

1.有跳躍

動態規劃:

原問題:長度為n、m的字串的最長公共子串行; 子問題:長度為i,j的字串的最長公共子串行

狀態: dp[i][j]表示word1[:i]和word2[:j]的最長公共子串行的長度

初始化:dp[i][0],dp[0][j]都為0.

狀態轉移方程:dp[i][j] = dp[i-1][j-1]+1 if word1[i-1]==word2[j-1] else max(dp[i-1][j],dp[i][j-1])

n, m =

len(word1)

,len

(word2)

dp =[[

0for _ in

range

(m+1)]

for _ in

range

(n+1)]

for i in

range(1

,n+1):

for j in

range(1

,m+1):

if word1[i-1]

== word2[j-1]

: dp[i]

[j]= dp[i-1]

[j-1]+

1else

: dp[i]

[j]=

max(dp[i-1]

[j],dp[i]

[j-1])

# 最終回溯到dp[k][k],故跳過k到i和k到j之間的不等部分。

2.無跳躍

利用逗號間隔符和字串的比較實現。結果在result中

m =

len(a)

n =len

(b)if m>n:

m, n, a, b = n, m, b, a

tmp_list =

result =

0# 利用','.join([str(i) for i in b])將b轉化為字串且任意兩個元素之間用逗號間隔

str_b =

','+

','.join(

[str

(i)for i in b])+

','#print(type(str_b))

for r in a:

str(r))if

','+

','.join(tmp_list)

+','

in str_b:

result =

max(result,

len(tmp_list)

)else

: tmp_list = tmp_list[1:

]

linux常見考點

1 在linux中,常用檔案的方式訪問裝置 2 linux中每個檔案都用i節點標示 3 全部磁碟又四個部分組成,分別是 引導快 專用塊 i節點表塊和資料儲存塊 4 編寫的shell程式在執行之前必須賦予該指令碼檔案執行許可權 5 核心分為程序管理系統 記憶體管理系統 i o管理系統和檔案管理系統 6...

習題集(2)C的考點

a 巨集理解 程式中定義以下巨集 define s a,b a b,若定義int area 且令area s 3 1,3 4 則變數area的值為 10 3 1 3 4 10 巨集替換只形式上 替換要想當 area 3 1 3 4 c語言裡用巨集 容易出錯地方 b 二維陣列理解 若有定義 int a...

秋招常見考點之HTTP請求

瀏覽器快取機制會用到的協議頭 last modified etag 表示乙個伺服器上的資源的最後修改時間 last modified 標示這個響應資源的最後修改時間。web伺服器在響應請求時,告訴瀏覽器資源的最後修改時間。etag web伺服器響應請求時,告訴瀏覽器當前資源在伺服器的唯一標識,然後通...