假設你有兩個陣列,乙個長乙個短,短的元素均不相同。找到長陣列中包含短陣列所有的元素的最短子陣列,其出現順序無關緊要。
返回最短子陣列的左端點和右端點,如有多個滿足條件的子陣列,返回左端點最小的乙個。若不存在,返回空陣列。
示例 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...