数组的度与子数组长度

public static int degreeOfArray(List<int> arr)
{
int count = arr.Count;
int[] freQue = new int[count];
//Dictionary<int,int> freQue=new Dictionary<int , int> ();
for (int i = 0; i < count; i++)
{
//freQue.Add(i, 0);
freQue[i] = 0;
for (int j = 0; j < count; j++)
{
if ( arr[i] == arr[j])

{
freQue[i]++;
}
}
}
int max = 0;
int index = 0;
//foreach(int m in freQue)
for (int k = 0; k < freQue.Count(); k++)
{
if (freQue[k] > max)
{
max = freQue[k];
index = k;
}
}
int rightIndex = 0;
for (int x = count - 1; x >= 0; x--)
{
if (arr[x] == arr[index])
{
rightIndex = x;
}
}
return rightIndex - index + 1;

}

 

 

1
Dictionary<int, int> frequency = new Dictionary<int, int>(); // 记录每个元素的出现次数 <br>Dictionary<int, int> firstIndex = new Dictionary<int, int>(); // 记录每个元素第一次出现的索引 <br>Dictionary<int, int> lastIndex = new Dictionary<int, int>(); // 记录每个元素最后一次出现的索引 <br>int maxFrequency = 0; // 最大出现次数 <br>foreach (int num in nums) <br>{ if (!firstIndex.ContainsKey(num)) firstIndex[num] = Array.IndexOf(nums, num); // 记录第一次出现的索引 <br>lastIndex[num] = Array.LastIndexOf(nums, num); // 记录最后一次出现的索引 <br>frequency[num] = frequency.ContainsKey(num) ? frequency[num] + 1 : 1; // 更新出现次数 <br>maxFrequency = Math.Max(maxFrequency, frequency[num]); // 更新最大出现次数 <br>} <br>int minLength = nums.Length; // 最短子数组长度 <br>foreach (var pair in frequency) <br>{ <br>  if (pair.Value == maxFrequency) <br>   { minLength = Math.Min(minLength, lastIndex[pair.Key] - firstIndex[pair.Key] + 1); // 计算最短子数组长度 <br>   } <br>} <br>return minLength; <br>} <br>} <br>public class Program <br>{ <br>  public static void Main(string[] args) <br>  { <br>     int[] nums = { 1, 2, 2, 3, 1, 4, 2 }; <br>      ArrayDegree arrayDegree = new ArrayDegree(); <br>      int minLength = arrayDegree.FindShortestSubarrayLength(nums); <br>     Console.WriteLine("数组的度数为:" + minLength); <br> }<br>}

  

posted @   yinghualeihenmei  阅读(9)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示