You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#统计数组连续重复最高频次数字 如何扩展获取第二高频次数字

C# 数组连续重复数值统计修改方案

实现思路

原代码仅记录了单次最高连续次数的数值,无法处理并列最高、输出次高的需求,我们调整逻辑如下:

  • 先遍历数组,记录所有连续段的数值和对应连续次数
  • 修复原代码未统计数组末尾连续段的潜在bug
  • 将所有连续段按连续次数降序排序,可灵活输出前N名或所有并列最高的条目

修改后完整代码

using System;
using System.Collections.Generic;
using System.Linq;

namespace 2258864
{
    class Program
    {
        static void MostRepeatedInARow(int[] array)
        {
            if (array == null || array.Length == 0)
            {
                Console.WriteLine("数组为空");
                return;
            }
            
            // 存储所有连续段的数值和连续次数
            List<(int Number, int Streak)> streaks = new List<(int, int)>();
            int count = 1;

            for (int i = 1; i < array.Length; i++)
            {
                if (array[i] == array[i - 1])
                {
                    count++;
                }
                else
                {
                    streaks.Add((array[i - 1], count));
                    count = 1;
                }
            }
            // 补充统计最后一段连续序列
            streaks.Add((array[array.Length - 1], count));

            // 按连续次数降序排序
            var sortedStreaks = streaks.OrderByDescending(s => s.Streak).ToList();

            // 输出最高连续次数的所有数值
            int maxStreak = sortedStreaks.First().Streak;
            Console.WriteLine($"连续重复次数最高({maxStreak}次)的数字:");
            foreach (var item in sortedStreaks.Where(s => s.Streak == maxStreak))
            {
                Console.WriteLine($"- 数字 {item.Number}");
            }

            // 输出第二高连续次数的所有数值
            var secondStreakGroup = sortedStreaks.Where(s => s.Streak < maxStreak).ToList();
            if (secondStreakGroup.Any())
            {
                int secondMaxStreak = secondStreakGroup.First().Streak;
                Console.WriteLine($"\n连续重复次数第二高({secondMaxStreak}次)的数字:");
                foreach (var item in secondStreakGroup.Where(s => s.Streak == secondMaxStreak))
                {
                    Console.WriteLine($"- 数字 {item.Number}");
                }
            }
        }
        static void Main()
        {
            int[] ListofNumbers = { 4, 2, 6, 6, 6, 6, 5, 5, 5, 4, 3, 5, 3, 3, 3, 3, 2 };
            MostRepeatedInARow(ListofNumbers);
        }
    }
}

运行效果

针对示例数组,输出结果为:

连续重复次数最高(4次)的数字:
- 数字 6
- 数字 3

连续重复次数第二高(3次)的数字:
- 数字 5

内容的提问来源于stack exchange,提问作者dean ambrose

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 02:42:01