給定乙個非空且只包含非負數的整數陣列 nums,陣列的度的定義是指數組裡任一元素出現頻數的最大值。
你的任務是在 nums 中找到與 nums 擁有相同大小的度的最短連續子陣列,返回其長度。
輸入:[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.
分析思路:
通過分治原理,將題目拆解,可得題目有兩個考點,第乙個就是找到陣列裡面出現頻數最大的值,例如
[10,10,20] 出現最多的值就是10 出現了2次,這出現了幾次,也就是這個陣列的度
[10,10,20,20] 出現最多的值就是10和20 出現了2次,2也就是這個陣列的度
第二個就是返回與這個陣列擁有相同大小的度的最短連續子陣列的長度
通過思考可得,
如果乙個陣列裡面度==1,那麼它的最短連續子陣列的長度就是1
如果乙個陣列裡面的度》1,並且得到這個度的頻數是唯一的,那麼就是出現出現最多次的那個數字的首尾下標相減+1
如果乙個陣列裡面的度》1,並且這個度的頻數不唯一,則取首尾下標相減+1最小的那個值.
那麼我們可以重新構造一種資料結構,用來儲存當前這個值,以及首尾下標,以及這個值出現的次數,和首尾下標的距離
class struct
}
public static int findshortestsubarray(int nums) else if(struct.count > count)
}else
}return mindistance;
}
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.連續子陣列裡面擁有相同度的...
LeetCode 697 陣列的度
給定乙個非空且只包含非負數的整數陣列 nums,陣列的度的定義是指數組裡任一元素出現頻數的最大值。你的任務是找到與 nums 擁有相同大小的度的最短連續子陣列,返回其長度。示例輸入 1,2,2,3,1 輸出 2 解釋 輸入陣列的度是2,因為元素1和2的出現頻數最大,均為2.連續子陣列裡面擁有相同度的...