class Program
{
static void Main(string[] args)
{
int[] input = { 1, 1, 1, 2, 2, 5, 2, 4, 9, 9, 20 };
IDuplicationFinder dup1 = new Duplication1();
string str1 = dup1.FindDuplication(input, 3);
Console.WriteLine(str1); IDuplicationFinder dup2 = new Duplication2();
string str2 = dup2.FindDuplication(input, 3);
Console.WriteLine(str2);
Console.Read();
}
}
class Duplication1 : IDuplicationFinder
{
public string FindDuplication(int[] input, uint minTimes)
{
Dictionary<int, int> valuedic = new Dictionary<int, int>();
#region 整个完全遍历
//foreach (var v in input)
//{
// var numtimes = input.Where(m => m == v).Count();
// if (numtimes >= minTimes && !valuedic.Keys.Contains(v))
// valuedic.Add(v, numtimes);
//}
#endregion
#region linq group
var groupnum = input.GroupBy(m => m);
foreach (var g in groupnum)
{
if (g.Count() >= minTimes)
valuedic.Add(g.Key, g.Count());
}
#endregion
return GetValue(valuedic);
}
private static string GetValue(Dictionary<int, int> valuedic)
{
StringBuilder sb = new StringBuilder();
foreach (var d in valuedic)
{
sb.AppendFormat("{0}出现了{1}次", d.Key, d.Value);
sb.AppendLine();
}
return sb.ToString();
} }
class Duplication2 : IDuplicationFinder
{
public string FindDuplication(int[] input, uint minTimes)
{
List<int> result = new List<int>();
Array.Sort(input);
if (minTimes == 1)//如果次数是1,就要把去重显示
{
if (input[0] == input[1])
result.Add(input[1]);
for (int i = 1; i < input.Length - 1; i++)
{
if (input[i] != input[i + 1])
result.Add(input[i + 1]);
}
}
else
{
int count = 1;//排序后 前一个跟后一个对比,所以从1开始
for (int i = 0; i < input.Length - 1; i++)
{
if (result.Count > 0 && result.Last() == input[i])
continue;
if (input[i] == input[i + 1])
{
count++;
if (count >= minTimes)
{
result.Add(input[i]);
count = 1;
}
} }
} return string.Join(",", result);
}
}
interface IDuplicationFinder
{
string FindDuplication(int[] input, uint minTimes);
}

  

t=[1,22,33,1,44,22,11,3,224,5,6,22,1,44]//查找出现次数最多的数字和次数 ruby
hst={}
t.each do |item|
if(hst.key?(item))
hst[item]+=1
else
hst[item]=1
end
end
p hst
b = Hash[hst.sort_by(){ |k, v| v }.reverse]
p b
p b.first

数组中所有重复次数大于等于minTimes的数字的更多相关文章

  1. 【C语言】统计数字在排序数组中出现的次数

    //数字在排序数组中出现的次数. //统计一个数字在排序数组中出现的次数.比如:排序数组{1,2,3,3,3,3,4,5}和数字3,因为3出现了4次,因此输出4. #include <stdio ...

  2. JZ-037-数字在排序数组中出现的次数

    数字在排序数组中出现的次数 题目描述 统计一个数字在升序数组中出现的次数. 题目链接: 数字在排序数组中出现的次数 代码 /** * 标题:数字在排序数组中出现的次数 * 题目描述 * 统计一个数字在 ...

  3. 剑指Offer面试题:32.数字在排序数组中出现的次数

    一.题目:数字在排序数组中出现的次数 题目:统计一个数字在排序数组中出现的次数.例如输入排序数组{1,2,3,3,3,3,4,5}和数字3,由于3在这个数组中出现了4次,因此输出4. 二.解题思路 2 ...

  4. 剑指offer系列41---数字在数组中出现的次数

    [题目]统计一个数字在排序数组中出现的次数. package com.exe9.offer; /** * [题目]统计一个数字在排序数组中出现的次数. * @author WGS * */ publi ...

  5. 剑指offer——python【第37题】数字在排序数组中出现的次数

    题目描述 统计一个数字在排序数组中出现的次数 思路 最贱的方法依旧是count计数.. 当然,,看到有序数组就应该想到二分法,找到重复数字左边和右边的数字,然后两个相减就可以了 解答 方法1 coun ...

  6. 《剑指offer》第五十三题(数字在排序数组中出现的次数)

    // 面试题53(一):数字在排序数组中出现的次数 // 题目:统计一个数字在排序数组中出现的次数.例如输入排序数组{1, 2, 3, 3, // 3, 3, 4, 5}和数字3,由于3在这个数组中出 ...

  7. 剑指offer37:统计一个数字在排序数组中出现的次数

    1 题目描述 统计一个数字在排序数组中出现的次数. 2 思路和方法 (1)查找有序数组,首先考虑使用二分查找,使时间复杂度为O(log n).更改二分查找的条件,不断缩小区间,直到区间头和区间尾均为k ...

  8. Leetcode26——删除有序数组中的重复项(双指针法)

    Leetcode26--删除有序数组中的重复项(双指针法) 1. 题目简述 给你一个升序排列的数组 nums ,请你原地 删除重复出现的元素,使每个元素只出现一次 ,返回删除后数组的新长度.元素的相对 ...

  9. [LeetCode] Remove Duplicates from Sorted Array 有序数组中去除重复项

    Given a sorted array, remove the duplicates in place such that each element appear only once and ret ...

随机推荐

  1. mysql mysqldump只导出表结构或只导出数据的实现方法

    mysql mysqldump只导出表结构或只导出数据的实现方法,需要的朋友可以参考下. mysql mysqldump 只导出表结构 不导出数据 复制代码代码如下: mysqldump --opt ...

  2. iOS 开发一年总结

    收获很多 1. 一个人包办从构思, 设计, 实现, 推广的全过程, 对自己的能力, 特别是能力范围有很大的提升. 以前在公司上班仅仅局限在实现的局域内, 现在在做自己的产品时, 在设计时的取舍, 对工 ...

  3. Web前端框架学习成本比较及学习方法

    就项目中自己用过的前端框架的学习成本比较与学习心得分享 刚工作时间不长只用过这几个框架下面是难易程度比较: 不论哪个web前端框架, 究其本质都是把页面的数据传递给后台服务器语言(如java)进行处理 ...

  4. C++内存泄露调试

    我在看DirectX Sample的时候,看到以下代码: // Enable run-time memory check for debug builds. #if defined(DEBUG) | ...

  5. python 知识 rstrip,strip,lstrip

    rstrip,strip,lstrip 作用:去除字符串中的空格或指定字符 一.默认用法:去除空格str.strip()  : 去除字符串两边的空格str.lstrip() : 去除字符串左边的空格s ...

  6. java程序练习:数组中随机10个数中的最大值

    //定义输入:其实是一个可以保存10个整数的数组 //使用循环遍历,生成10个随机数,放入每个元素中//打桩,数组中的内容 //定义输出变量 //将数组中第一个元素取出,保存在max中,当靶子 //遍 ...

  7. 1071: [SCOI2007]组队 - BZOJ

    Description NBA每年都有球员选秀环节.通常用速度和身高两项数据来衡量一个篮球运动员的基本素质.假如一支球队里速度最慢的球员速度为minV,身高最矮的球员高度为minH,那么这支球队的所有 ...

  8. org.hibernate.PropertyAccessException: Null value was assigned to a property of primitive type setter of com.chen.vo.Dept.parentId

    异常描述:执行以下的addAsHaveParentId2方法出现此异常: /*-----------------------类Dept.Dept.hbm.xml有parentId属性(数据库中有此列) ...

  9. "Principles of Reactive Programming" 之<Actors are Distributed> (1)

    week7中的前两节课的标题是”Actors are Distributed",讲了很多Akka Cluster的内容,同时也很难理解. Roland Kuhn并没有讲太多Akka Clus ...

  10. 中国首个 SaaS 模式的云告警平台安卓版 APP 上线

    今年一月底,国内首个 SaaS 模式的云告警平台 OneAlert 正式发布了 iOS 版 App 客户端,今天上午,安卓版 App 客户端也正式上线了!每个安卓用户,无需电脑,都可以通过手机全程跟踪 ...