697 陣列的度

2021-10-19 15:51:30 字數 1185 閱讀 9960

給定乙個非空且只包含非負數的整數陣列 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擁有相同大小的度的最短連續子陣列,其長度...