leetcode之滑動視窗模板

2021-10-23 17:44:47 字數 1517 閱讀 3594

假設你有兩個陣列,乙個長乙個短,短的元素均不相同。找到長陣列中包含短陣列所有的元素的最短子陣列,其出現順序無關緊要。

返回最短子陣列的左端點和右端點,如有多個滿足條件的子陣列,返回左端點最小的乙個。若不存在,返回空陣列。

示例 1:

輸入:big = [7,5,9,0,2,1,3,5,7,9,1,1,5,8,8,9,7]

small = [1,5,9]

輸出: [7,10]

示例 2:

//1. 初始化雙指標

left =0;

right =0;

while

(right < size)

//6.縮小口前,基於left進行視窗內資料的一系列更新

left++

;//7.縮小視窗

}//8. 返回結果

}

#define max_val

#define max_len 100000

int g_hash[max_len]=;

void

inithash

(int smallsize)

intcheckmatch

(int

* big,

int* small,

int smallsize)

}return1;

}int

gethashkey

(int val,

int* small,

int smallsize)

}return smallsize;}/*

* 獲取最短超串主函式

*/int

*shortestseq

(int

* big,

int bigsize,

int* small,

int smallsize,

int* returnsize)

right++

;//3. 向右擴充套件視窗

while

(checkmatch

(big, small, smallsize)==1

)//5.

key =

gethashkey

(big[left]

, small, smallsize);if

(key != smallsize)

left++

;//向右縮視窗}}

if(minwinsize ==

65535

)*returnsize =2;

array =

(int*)

malloc

(*returnsize *

sizeof

(int))

; array[0]

= minleft;

array[1]

= minright;

return array;

}

滑動視窗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 滑動視窗

3.無重複字元的最長子串 給定乙個字串,請你找出其中不含有重複字元的最長子串的長度。示例 1 輸入 abcabcbb 輸出 3解釋 因為無重複字元的最長子串是 abc 所以其長度為 3。示例 2 輸入 bbbbb 輸出 1解釋 因為無重複字元的最長子串是 b 所以其長度為 1。示例 3 輸入 pww...