zoukankan      html  css  js  c++  java
  • leetcode697

    public class Solution
        {
            public int FindShortestSubArray(int[] nums)
            {
                //先找到最大频度的数字都有哪些,加入到一个集合中            
                var dic = new Dictionary<int, int>();
                var dic2 = new Dictionary<int, List<int>>();
                for (int i = 0; i < nums.Length; i++)
                {
                    var num = nums[i];
                    if (!dic.ContainsKey(num))
                    {
                        dic.Add(num, 1);
                        dic2.Add(num, new List<int>());
                    }
                    else
                    {
                        dic[num]++;
                    }
    
                    dic2[num].Add(i);//记录此数字的所有下标
    
                }
                var list = dic.OrderByDescending(x => x.Value).ToList();
                int maxFreq = list[0].Value;
                var list2 = dic.Where(x => x.Value == maxFreq).ToList();
    
                //遍历集合,一次判断每个数最早出现的位置和最晚出现的位置
                int min = int.MaxValue;
                foreach (var l in list2)
                {
                    var num = l.Key;
                    var begin = dic2[num].First();
                    var end = dic2[num].Last();
                    var dif = end - begin;
                    if (min > dif)
                    {
                        min = dif;
                    }
                }
                //寻找最小间隔
                return min + 1;
            }
        }
  • 相关阅读:
    敏捷的调试
    敏捷的编码
    敏捷的需求分析
    敏捷的反馈
    敏捷的方法论
    敏捷的世界观
    MarkDown添加数学公式
    性能分析初学者指南
    可执行文件的装载与进程
    会话技术------客户端技术cookie
  • 原文地址:https://www.cnblogs.com/asenyang/p/9733056.html
Copyright © 2011-2022 走看看