給定乙個非空且只包含非負數的整數陣列 nums,陣列的度的定義是指數組裡任一元素出現頻數的最大值。
你的任務是在 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 範圍內的整數。
建立乙個字典a,用來記錄nums中每個元素出現的位置。度為出現位置最多的元素len,建立for迴圈,求出度並寫入m。返回擁有相同度的元素中,求min(首末位置最+1)。
class
solution
:def
findshortestsubarray
(self, nums: list[
int])-
>
int:
#用dict記錄nums中每個元素出現的位置,
a =for i in
range
(len
(nums)):
if nums[i]
notin a:
a[nums[i]]=
[i]else
: a[nums[i]
] m =
0#度為出現位置最多的len
for i in a:
m =max(m,
len(a[i]))
r =len(nums)
#返回擁有相同度的元素中,min(首末位置最+1)
for i in a:
iflen
(a[i]
)== m:
r =min(r, a[i][-
1]- a[i][0
]+1)
return r
697 陣列的度
給定乙個非空且只包含非負數的整數陣列 nums,陣列的度的定義是指數組裡任一元素出現頻數的最大值。你的任務是找到與 nums 擁有相同大小的度的最短連續子陣列,返回其長度。示例 1 輸入 1,2,2,3,1 輸出 2 解釋 輸入陣列的度是2,因為元素1和2的出現頻數最大,均為2.連續子陣列裡面擁有相...
697 陣列的度
給定乙個非空且只包含非負數的整數陣列nums,陣列的度的定義是指數組裡任一元素出現頻數的最大值。你的任務是找到與nums擁有相同大小的度的最短連續子陣列,返回其長度。示例 1 輸入 1,2,2,3,1 輸出 2解釋 輸入陣列的度是2,因為元素1和2的出現頻數最大,均為2.連續子陣列裡面擁有相同度的有...
697 陣列的度
解題思路 最直觀最笨的方法 1.遍歷陣列,借助輔助陣列count,統計原陣列中每個元素出現的次數 2.根據count中元素額值,求出陣列的度 3.輔助二維陣列arr,初始值為 1,儲存陣列的度對應的元素的最小索引和最大索引 4.遍歷原陣列的元素,找到與nums擁有相同大小的度的最短連續子陣列,其長度...