zoukankan      html  css  js  c++  java
  • Leetcode697.Degree of an Array数组的度

    给定一个非空且只包含非负数的整数数组 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范围内的整数。

    class Solution {
    public:
        int findShortestSubArray(vector<int>& nums) {
           map<int, int> check;
           vector<int> save;
           int len = nums.size();
           int MAX = 0;
           for(int i = 0; i < len; i++)
           {
               check[nums[i]]++;
               MAX =max(MAX, check[nums[i]]);
           }
           for(map<int, int> :: iterator itr = check.begin(); itr != check.end(); itr++)
           {
               if(itr ->second == MAX)
                save.push_back(itr ->first);
           }
           int res = len;
           for(int i = 0; i < save.size(); i++)
           {
               int j, k;
                for(j = 0; j < len; j++)
                {
                    if(nums[j] == save[i])
                        break;
                }
                for(k = len -1; k >= 0; k--)
                {
                    if(nums[k] == save[i])
                        break;
                }
                if(k >= j)
                {
                    res = min(res, k - j + 1);
                }
           }
           return res;
        }
    };
  • 相关阅读:
    css3 Gradient背景
    ArrayList源码解析(一)
    css3 @font-face
    ArrayList源码解析(二)自动扩容机制与add操作
    ArrayList源码解析(三)
    JavaScript基础
    JavaScript中的字符串方法总结
    一个完整的HTTP请求过程
    HTML5学习
    JS编程
  • 原文地址:https://www.cnblogs.com/lMonster81/p/10434001.html
Copyright © 2011-2022 走看看