給定乙個非空且只包含非負數的整數陣列 nums, 陣列的度的定義是指數組裡任一元素出現頻數的最大值。
你的任務是找到與 nums 擁有相同大小的度的最短連續子陣列,返回其長度。
示例 1:
輸入: [1, 2, 2, 3, 1]
輸出: 2
解釋:輸入陣列的度是2,因為元素1和2的出現頻數最大,均為2.
連續子陣列裡面擁有相同度的有如下所示:
[1, 2, 2, 3, 1], [1, 2, 2, 3], [2, 2, 3, 1], [1, 2, 2], [2, 2, 3], [2, 2]
最短連續子陣列[2, 2]的長度為2,所以返回2.
示例 2:
輸入: [1,2,2,3,1,4,2]
輸出: 6
注意:nums.length 在1到50,000區間範圍內。
nums[i] 是乙個在0到49,999範圍內的整數。
解題思路
雙指標法,首先掃瞄一遍求出陣列的額度,然後用雜湊表維護乙個雙指標指向的區間。如果右側元素進入導致某個樹出現的次數和度相等。
那麼就不斷挪動左側指標,使得右側元素能夠保持這個度的最小區間。 然後維護這個最小值即可。
時間複雜度o(n)
**
#include
class solution
unordered_map mp1;
int l = 0, r = 0;
int ans = 2e9;
while(r < nums.size(
)) ans = min(ans, r - l + 2);}
r ++;
}return ans;}}
;
leetcode刷題 陣列 陣列的度
給定乙個非空且只包含非負數的整數陣列 nums,陣列的度的定義是指數組裡任一元素出現頻數的最大值。你的任務是找到與 nums 擁有相同大小的度的最短連續子陣列,返回其長度。示例 1 輸入 1,2,2,3,1 輸出 2 解釋 輸入陣列的度是2,因為元素1和2的出現頻數最大,均為2.連續子陣列裡面擁有相...
Leetcode 697 陣列的度
題目 給定乙個非空且只包含非負數的整數陣列 nums,陣列的度的定義是指數組裡任一元素出現頻數的最大值。你的任務是找到與 nums 擁有相同大小的度的最短連續子陣列,返回其長度。示例 1 輸入 1,2,2,3,1 輸出 2 解釋 輸入陣列的度是2,因為元素1和2的出現頻數最大,均為2.連續子陣列裡面...
LeetCode697 陣列的度
給定乙個非空且只包含非負數的整數陣列nums,陣列的度的定義是指數組裡任一元素出現頻數的最大值。你的任務是找到與nums擁有相同大小的度的最短連續子陣列,返回其長度。示例 1 輸入 1,2,2,3,1 輸出 2 解釋 輸入陣列的度是2,因為元素1和2的出現頻數最大,均為2.連續子陣列裡面擁有相同度的...