LeetCode刷題之旅 滑動視窗例題

2021-09-10 02:34:17 字數 2136 閱讀 4746

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

示例:

輸入:s = 7, nums = [2,3,1,2,4,3]輸出:2解釋:子陣列[4,3]是該條件下的長度最小的連續子陣列。
高階:

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

//時間複雜度:o(n)

//空間複雜度:o(1)

class solution

if(res == nums.size()+1)

return 0;

return res;

}};

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

示例 1:

輸入: "abcabcbb"

輸出: 3

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

示例 2:

輸入: "bbbbb"

輸出: 1

解釋: 因為無重複字元的最長子串是 "b",所以其長度為 1。

示例 3:

輸入: "pwwkew"

輸出: 3

解釋: 因為無重複字元的最長子串是 "wke"所以其長度為 3。請注意,你的答案必須是 子串 的長度,"pwke"是乙個子串行,不是子串。

class solution ;       //設定乙個陣列,0為沒有重複,1為重複

int l = 0, r = -1; //滑動視窗為s[l...r]

int res = 0;

while( l

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

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

說明:

如 s = "cbaebabacd"    p = "abc", 返回[0,6]

如 s = "abab"   p = "ba", 返回[0,1,2]

class solution ; //判斷是否為空

vectorres, m(256, 0);

int left = 0, right = 0, count = p.size(), n = s.size();

for (char c : p) ++m[c]; //遍歷string p

while (right < n)

return res;

}};

給定乙個字串 s 和乙個字串 t,請在 s 中找出包含 t 所有字母的最小子串。

示例:

輸入: s = "adobecodebanc", t = "abc"

輸出: "banc"

說明:

class solution 

if (++lettercnt[s[left]] > 0) --cnt;

++left;}}

return res;

}};

leetcode刷題之旅(day1)

給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1 2 ...

Leetcode刷題之旅(Day2)

給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。示例 輸入 2 4 3 5 6 4 輸出 ...

LeetCode刷題之旅(Day4)

給定兩個大小為 m 和 n 的有序陣列 nums1 和 nums2。請你找出這兩個有序陣列的中位數,並且要求演算法的時間複雜度為 o log m n 你可以假設 nums1 和 nums2 不會同時為空。示例 1 nums1 1,3 nums2 2 則中位數是 2.0 示例 2 nums1 1,2 ...