LeetCode記錄 最長重複子陣列

2021-10-07 19:33:50 字數 1828 閱讀 5590

2023年7月6日09:11:01

難度:中等

用時:4個小時了吧,大霧

分類:動態規劃、雜湊、二分查詢、滑動視窗

題目:

給兩個整數陣列 a 和 b ,返回兩個陣列中公共的、長度最長的子陣列的長度。

示例:

輸入:a: [1,2,3,2,1]

b: [3,2,1,4,7]

輸出:3

解釋:長度最長的公共子陣列是 [3, 2, 1] 。

解法:

動態規劃

滑動視窗

雜湊+二分查詢

自我嘗試——超時

一開始,沒思路,看了眼提示(動態規劃),於是腦子裡和本子上出現了下面這個表12

3213

①2①①

1①①4

7然而,腦子裡是這個表,思想好像跑偏了,知道是dp,但不知道要怎麼寫,遞推公式也不知道。。。與其說不知道,不如說根本沒往那想

/*

* 錯了兩個例子,然後超時了。。。

* 想到的是dp,但是敲著敲著我就不知道我在幹嘛了

*/var

findlength

=function(a

,b)// console.log(mp);

let maxans =

;for

(let i =

0; i <

b.length; i++

)else

}else

}// console.log("結束", ans + "\n");

maxans = ans.length > maxans.length ? ans : maxans;}}

}}return maxans.length;

// return maxans;};

console.

log(

findlength([

1,2,

3,2,

1],[

3,2,

1,4,

7]))

;console.

log(

findlength([

0,0,

0,0,

0],[

0,0,

0,0,

0]))

;console.

log(

findlength([

0,1,

1,1,

1],[

1,0,

1,0,

1]))

;

正解1——動態規劃

emmmm,自己寫的解法又長…又難理解。。。還是錯的。。。還真的,,,正確的解法必定精簡

// 動態規劃

varfindlength

=function(a

,b)var ans =0;

for(

let i =

a.length -

1; i >=

0; i--)}

// console.log(dp);

return ans;};

console.

log(

findlength([

1,2,

3,2,

1],[

3,2,

1,4,

7]))

;

最長重複子陣列(LeetCode)

題目鏈結 給兩個整數陣列 a 和 b 返回兩個陣列中公共的 長度最長的子陣列的長度。示例 輸入 a 1,2,3,2,1 b 3,2,1,4,7 輸出 3 解釋 長度最長的公共子陣列是 3,2,1 1 len a len b 1000 0 a i b i 100和最長公共子串問題相似,可以使用動態規劃...

LeetCode 最長重複子串?

q 給出乙個字串 s,考慮其所有重複子串 s 的連續子串,出現兩次或多次,可能會有重疊 返回任何具有最長可能長度的重複子串。如果 s 不含重複子串,那麼答案為 示例 1 輸入 banana 輸出 ana 示例 2 輸入 abcd 輸出 a 1.字串編碼法 具體可以去看rabin karp 字串編碼 ...

最長重複子串

首先這是乙個單字串問題。子字串r 在字串l 中至少出現兩次,則稱r 是l 的重複子串。重複子串又分為可重疊重複子串和不可重疊重複子串。方法 kmp演算法求解 在kmp演算法的關鍵就是求解next陣列,針對next j k,可以得到p 0,1,k 1 p j k,j k 1,j 1 看到p 0,1,k...