日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

697-数组的度

發布時間:2025/3/21 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 697-数组的度 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
給定一個非空且只包含非負數的整數數組 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范圍內的整數。解法一: public static int findShortestSubArray(int[] nums) {Map<Integer,Integer> map=new HashMap<>();List<Integer> list=new ArrayList<>();for (int a:nums){map.put(a,map.containsKey(a)?map.get(a)+1:1);list.add(a);}int max=0;for (int i=0;i<nums.length;i++)max=map.get(nums[i])>max?map.get(nums[i]):max;int du=list.size();for (int i=0;i<nums.length;i++){if (map.get(nums[i])==max&&du>(list.lastIndexOf(nums[i])-list.indexOf(nums[i])+1)){du=list.lastIndexOf(nums[i])-list.indexOf(nums[i])+1;}}return du;}解法2:public static int findShortestSubArray(int[] nums) {int max=0;for (int a:nums)max=a>max?a:max;int maxSize[]=new int[max+1];int minSize[]=new int[max+1];int mapSize[]=new int[max+1];int du=1;for (int i=0;i<nums.length;i++){int num=nums[i];if (minSize[num]==0){minSize[num]=i;maxSize[num]=i;}else {maxSize[num]=i;}du =Math.max(++mapSize[num],du);}int res=50001;for (int i=1;i<=max;i++){if (du==mapSize[i]){res=Math.min(res,maxSize[i]-minSize[i]+1);}}return res;}

?

轉載于:https://www.cnblogs.com/dloading/p/10820991.html

總結

以上是生活随笔為你收集整理的697-数组的度的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。