leetcode 滑動視窗

2021-10-10 17:36:15 字數 4010 閱讀 1022

3. 無重複字元的最長子串

給定乙個字串,請你找出其中不含有重複字元的最長子串的長度。

示例 1:

輸入:"abcabcbb"輸出:3解釋:因為無重複字元的最長子串是"abc",所以其長度為 3。
示例 2:

輸入:"bbbbb"輸出:1解釋:因為無重複字元的最長子串是"b",所以其長度為 1。
示例 3:

輸入:"pwwkew"輸出:3解釋:因為無重複字元的最長子串是"wke",所以其長度為 3。

請注意,你的答案必須是子串的長度,"pwke"是乙個子串行,不是子串。

class solution 

res = max(res, right - left);

}return res;

}};

30. 串聯所有單詞的子串

給定乙個字串s和一些長度相同的單詞words。找出s中恰好可以由words中所有單詞串聯形成的子串的起始位置。

注意子串要與words中的單詞完全匹配,中間不能有其他字元,但不需要考慮words中單詞串聯的順序。

示例 1:

輸入:

s ="barfoothefoobarman",words =["foo","bar"]輸出:[0,9]解釋:從索引 0 和 9 開始的子串分別是 "barfoo" 和 "foobar" 。

輸出的順序不重要, [9,0] 也是有效答案。

示例 2:

輸入:

s ="wordgoodgoodgoodbestword",words =["word","good","best","word"]輸出:

class solution 

}while (right - left >= n * len)

string str = s.substr(left, len);

left += len;

if (need.count(str))

window[str]--;}}

}}

return res;

}};

76. 最小覆蓋子串

給你乙個字串s、乙個字串t。返回s中涵蓋t所有字元的最小子串。如果s中不存在涵蓋t所有字元的子串,則返回空字串""

注意:如果s中存在這樣的子串,我們保證它是唯一的答案。

示例 1:

輸入:s = "adobecodebanc", t = "abc"輸出:"banc"
示例 2:

輸入:s = "a", t = "a"輸出:"a"

class solution 

}while (valid == need.size())

char d = s[left];

left++;

if (need.count(d))

window[d]--;}}

}return res;

}};

給定乙個含有 n 個正整數的陣列和乙個正整數 s ,找出該陣列中滿足其和 ≥ s 的長度最小的 連續 子陣列,並返回其長度。如果不存在符合條件的子陣列,返回 0。

示例:輸入:s = 7, nums = [2,3,1,2,4,3]

輸出:2

解釋:子陣列 [4,3] 是該條件下的長度最小的子陣列。

高階:如果你已經完成了 o(n) 時間複雜度的解法, 請嘗試 o(n log n) 時間複雜度的解法。

class solution 

}return res == nums.size() + 1 ? 0 : res;

}};

給定乙個字串 s 和乙個非空字串 p,找到 s 中所有是 p 的字母異位詞的子串,返回這些子串的起始索引。

字串只包含小寫英文本母,並且字串 s 和 p 的長度都不超過 20100。

說明:字母異位詞指字母相同,但排列不同的字串。

不考慮答案輸出的順序。

示例 1:

輸入:s: "cbaebabacd" p: "abc"

輸出:[0, 6]

解釋:起始索引等於 0 的子串是 "cba", 它是 "abc" 的字母異位詞。

起始索引等於 6 的子串是 "bac", 它是 "abc" 的字母異位詞。

示例 2:

輸入:s: "abab" p: "ab"

輸出:[0, 1, 2]

解釋:起始索引等於 0 的子串是 "ab", 它是 "ab" 的字母異位詞。

起始索引等於 1 的子串是 "ba", 它是 "ab" 的字母異位詞。

起始索引等於 2 的子串是 "ab", 它是 "ab" 的字母異位詞。

class solution 

}while (right - left >= p.size())

char d = s[left];

left++;

if (need.count(d))

window[d]--;}}

}return res;

}};

給定兩個字串 s1 和 s2,寫乙個函式來判斷 s2 是否包含 s1 的排列。

換句話說,第乙個字串的排列之一是第二個字串的子串。

示例1:

輸入: s1 = "ab" s2 = "eidbaooo"

輸出: true

解釋: s2 包含 s1 的排列之一 ("ba").

示例2:

輸入: s1= "ab" s2 = "eidboaoo"

輸出: false

注意:輸入的字串只包含小寫字母

兩個字串的長度都在 [1, 10,000] 之間

class solution 

}while (right - left >= t.size())

char d = s[left];

left++;

if (need.count(d))

window[d]--;}}

}return false;

}};

滑動視窗leetcode

給定乙個陣列 nums,有乙個大小為 k 的滑動視窗從陣列的最左側移動到陣列的最右側。你只可以看到在滑動視窗 k 內的數字。滑動視窗每次只向右移動一位。返回滑動視窗最大值。示例 輸入 nums 1,3,1,3,5,3,6,7 和 k 3輸出 3,3,5,5,6,7 解釋 滑動視窗的位置 最大值 1 ...

leetcode 滑動視窗

面試題57 ii.和為s的連續正數序列 題目 輸入乙個正整數 target 輸出所有和為 target 的連續正整數序列 至少含有兩個數 序列內的數字由小到大排列,不同序列按照首個數字從小到大排列。題解 摘自 什麼是滑動視窗 滑動視窗可以看成陣列中框起來的乙個部分。在一些陣列類題目中,我們可以用滑動...

leetcode 滑動視窗

滑動視窗可以套用模板 如果不是 left math.max int map.get ch 1,left 而是left int map.get ch 1 當指標到了第二個a時,因為 left map.get a 1,left會後退指向到第乙個a的下乙個下標,即1,所以得到錯誤結果 map只儲存子串中的...