C# 找出数组中只出现了一次的数字
admin
2024-03-04 01:02:39
0

.NET 生态越来越好,初学的朋友也越来越多。处理同一件简单的问题,随着我们知识的积累解决问题的方法也会越来越多。

开始学习一门新的语言,我们经常会去解决之前用别的语言解决过无数次的老问题,今天我们来看看这么一道简单的查重题。

题目

c#输入十个数,找出其中所有只出现过一次的数字。

题目分析

让输入10个数字,这个很简单,控制台程序用 Console.ReadLine() 然后强制转换为 int。 最后让找出那个只出现了一次的元素,那么我们可以在输入过程中处理,也可以输入完成后处理,可以有以下解决方案。

方法一

首先我们介绍中规中矩的简单方法,涉及到 Dictionary 字典的用法。
Dictionary的主要用途是提供快速的基于键值的元素查找。Dictionary的结构一般是这样的:Dictionary<[key], [value]>
我们可以将输入的 int 为 key,出现的次数为 value,对每个输入的数字进行检索和计数,最终打印出只出现过一次的数据:

Dictionary input= new Dictionary();
for(int i = 0; i < 10; i++)
{Console.Write($"请输入第{i+1}个数:");int temp = Convert.ToInt32(Console.ReadLine());// 如果存在要添加的if (input.ContainsKey(temp)){// 记录输入次数+1input[temp]++;}else{// 不存在计数1次input.Add(temp, 1);}
}Console.WriteLine($"出现过一次的有:");
foreach(var one in input)
{if(one.Value == 1){Console.WriteLine(one.Key);}
}

方法二

我们可以使用 List 记录用户的输入,并同时在每次输入时查询之前是否已经输入过,若已经输入过则保存到另一个 List 中。最后比较两个 List 得出结论

// 记录输入
List numbers = new List { };
// 记录重复的
List notthis = new List { };
for (int i = 0; i < 10; i++)
{Console.Write($"请输入第{i + 1}个数:");int temp = Convert.ToInt32(Console.ReadLine());if (numbers.Contains(temp)){notthis.Add(temp);}numbers.Add(temp);
}
Console.WriteLine($"出现过一次的有:");
foreach (int one in numbers)
{if (!notthis.Contains(one)){Console.WriteLine(one);}
}

这段后面的部分可以使用 Except 进行差集计算优化为:

List haveone = numbers.Except(notthis).ToList();
Console.WriteLine($"出现过一次的有:{string.Join(",", haveone)}");

方法三

我们也可以使用 Linq 来处理,先对其进行分组,然后查询出仅现过1次的数据。

List numbers = new List { };
for (int i = 0; i < 10; i++)
{Console.Write($"请输入第{i + 1}个数:");int temp = Convert.ToInt32(Console.ReadLine());numbers.Add(temp);
}var linquse = numbers.GroupBy(x => x).Where(g => g.Count() == 1).Select(s => s.Key);
Console.WriteLine($"出现过一次的有:{string.Join(",", linquse)}");

相关内容

热门资讯

赛尔号西塔的珍贵回忆任务怎么做 赛尔号西塔的珍贵回忆任务怎么做赛尔号西塔的珍贵回忆任务怎么做西塔会告诉往下有两个冰柱,在冰柱的右上方...
诛仙的天道戒指是怎么来的? 诛仙的天道戒指是怎么来的?BOSS掉落的,修罗BOSS大多有几率掉这个您好,天道戒指一般是打BOSS...
张家界五天四晚跟团游怎么玩?来... 张家界,是那种让摄影师放下相机,只想用眼睛静静记录的地方。这里的每一座山峰都带着大自然的原始力量,每...
《心引力》的原唱居然是王俊凯蔡... 《心引力》的原唱居然是王俊凯蔡依林,还有哪些歌曲的原唱让你感到意外?《月亮代表我的心》原唱不是邓丽君...
助力上海机场打造全球旅客中转出... 可以在休息舱睡个觉,或是在过夜休息区躺一躺,甚至还能去淋浴间免费冲个澡……随着“中转无忧”“深夜驿站...
最有先见之明,未卜先知,半似仙... 最有先见之明,未卜先知,半似仙人的三个星座都有哪些?天平座他们对于未来和事情都有非常好的预知和判断能...
带着宠物去旅游!出行攻略来了 近年来,我国宠物数量持续增加,《2025年中国宠物行业白皮书(消费报告)》显示,2024年我国城镇宠...
《诛仙1》的评分降低,究竟与“... 《诛仙1》的评分降低,究竟与“流量明星”的演技有关系吗?跟流量有一定的关系,有时候不一定说跟演技有关...
幼儿园国学礼仪教育包括哪些 幼儿园国学礼仪教育包括哪些首先幼儿国学的学习是分阶段性的,根据幼儿园小、中、大三个班幼儿身心发展规律...
领航幼儿园广东话怎么说? 领航幼儿园广东话怎么说?领航幼儿园广东话怎么讲... 领航幼儿园广东话怎么讲 展开领航幼儿园的广...
星学院主要讲了什么,求人物介绍 星学院主要讲了什么,求人物介绍我们公司做的
封神榜:还以为雷震子是丑男?看... 封神榜:还以为雷震子是丑男?看了他的卸妆照后,被帅到了吗?被帅到了,他的五官特别的精致,皮肤也很好,...
特雷斯蒂娜和木原数多是什么关系 特雷斯蒂娜和木原数多是什么关系没什么,两个人都属于木原一族而已他打一方用的是“寸止”是木原一族特有的...
729声工场配音培训班一年收几... 729声工场配音培训班一年收几次一次。学费大概每年需要一万五左右,学费和住宿费等杂费加在一起,四年大...
电影演员董洁有多大 电影演员董洁有多大36 岁董 洁外文名Angel民 族汉族星 座白羊座血 型O型...
我们在淘宝网上购物用英语怎么说 我们在淘宝网上购物用英语怎么说we do online shopping in a website ...
百灵威公司的化学产品怎么样? 百灵威公司的化学产品怎么样?产品挺不错,只是价格比国产要高,质量可定是好,这也是进口试剂和国产试剂之...
成都淘宝摄影地点 成都淘宝摄影地点一般是在哪啊,不要花花草草的那种感觉新会展中心,春熙路都不错,我就选的这两个地方
一个十斤油壶装满,一个七斤壶,... 一个十斤油壶装满,一个七斤壶,一个三斤壶,没有称的情况下分一个五斤油出来1、7斤壶装满,先倒入3斤壶...
穷人的孩子,真的会有出路吗? 穷人的孩子,真的会有出路吗?关于穷人的孩子是否有出路:虽然穷人的孩子面临的教育资源和机会有限,但这并...