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. 如何应用CLR线程池来管理多线程

        class Program     {         static void Main(string[] args)         {             int intWorkerT ...

  2. 使用Yeoman搭建 AngularJS 应用 (5) —— 让我们搭建一个网页应用

    原文地址:http://yeoman.io/codelab/scaffold-app.html 基架 (Scaffolding) 在Yeoman中的意思是为基于你特殊的配置需求,为网站程序生成文件的工 ...

  3. 1034: [ZJOI2008]泡泡堂BNB - BZOJ

    Description 第XXXX届NOI期间,为了加强各省选手之间的交流,组委会决定组织一场省际电子竞技大赛,每一个省的代表队由n名选手组成,比赛的项目是老少咸宜的网络游戏泡泡堂.每一场比赛前,对阵 ...

  4. 如何使用 XSD

    如何使用 XSD 一个简单的 XML 文档: 请看这个名为 "note.xml" 的 XML 文档: <?xml version="1.0"?> & ...

  5. 电商安全无小事,如何有效地抵御 CSRF 攻击?

    现在,我们绝大多数人都会在网上购物买东西.但是很多人都不清楚的是,很多电商网站会存在安全漏洞.比如乌云就通报过,国内很多家公司的网站都存在 CSRF 漏洞.如果某个网站存在这种安全漏洞的话,那么我们在 ...

  6. beyond compare ftp 文件夹同步

    因为经常要同步服务器上的代码,今天试了一下beyond compare 的ftp同步非常爽.以前都只用了beyond compare的文件夹比较功能了,ftp功能没有使用过. 步骤1:点击:会话——& ...

  7. QStringList与QString互转

    QStringList fonts;fonts << "Arial" << "Helvetica" << "Tim ...

  8. Photoshop:路径填充边缘虚化问题

    怎么才能不让它虚化呢?  解决方案一: 1.同样画出路径 2.新建图层 3.回到路径面板,右击路径图层,选择“填充路径” 4.把“羽化”设置为0,取消选择“消除锯齿” 换个背景色看看效果:一点虚化都没 ...

  9. MyBatis的动态SQL操作--删除

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAUYAAAC/CAIAAAANX+LCAAAYvElEQVR4nO2dWWycV9nHDyC6UEGBGy

  10. P143、面试题25:二叉树中和为某一值的路径

    题目:输入一棵二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径.从树的根结点开始往下一直到叶结点所经过的结点形成一条路径.二叉树结点的定义如下:struct BinaryTreeNode ...