c#:判断一个数组元素中否有重复元素
给定一个数组,判定该数组中是否有重复元素。
判定该数组中是否有重复元素总结出以下实现方案:
using System; using System.Collections.Generic; using System.Linq; using System.Text;namespace Demo {class Program{/*** 判定一个字符串中是否有重复的元素。*/static void Main(string[] args){string[] arr = new string[] { "1", "2", "3", "4", "3" };bool isContainsSameItem = IsSameWithForeach(arr);Console.WriteLine(isContainsSameItem);isContainsSameItem = IsSameWithSortAndCompare(arr);Console.WriteLine(isContainsSameItem);isContainsSameItem = IsSameWithHashSet(arr);Console.WriteLine(isContainsSameItem);isContainsSameItem = IsSameWithArrayContains(arr);Console.WriteLine(isContainsSameItem);Console.ReadKey();}/*** 利用array.contains存储及判断是否存在重复数据* **/static bool IsSameWithArrayContains(string[] arr){var newArr = new string[arr.Length];var idx = 0;foreach (var i in arr){if (false == newArr.Contains(i)){newArr[idx] = i;idx++;}else{return true;}}return false;}/*** 利用hasset的原理来实现* **/static bool IsSameWithHashSet(string[] arr){ISet<string> set = new HashSet<string>();for (var i = 0; i < arr.Length; i++){// 这里可利用该元素来实现统计重复的原理有哪些,及重复个数。//bool state = set.Add(arr[i]); // 如果返回false,表示set中已经有该元素。//Console.WriteLine(state);set.Add(arr[i]);}return set.Count != arr.Length;}/***排序后,比较相邻的数据是否有重复的。*/static bool IsSameWithSortAndCompare(string[] arr){// 先排序 Array.Sort(arr);//Console.WriteLine(string.Join(",", arr));// 对比相邻的数据是否相同for (var i = 0; i < arr.Length - 1; i++){if (arr[i] == arr[i + 1])return true;}return false;}/*** 双层遍历*/static bool IsSameWithForeach(string[] arr){for (var i = 0; i < arr.Length - 1; i++){for (var j = i + 1; j < arr.Length; j++){if (arr[i] == arr[j])return true;}}return false;}} }
其中我个人觉得是:IsSameWithHashSet(string[] arr)效率最高。
测试性能,测试代码:
1 string[] arr = new string[100000]; 2 // 给arr填充为一个没有任何重复数据的数组来,测试性能。 3 for (var i = 0; i < arr.Length; i++) 4 { 5 arr[i] = i.ToString(); 6 } 7 8 System.Diagnostics.Stopwatch watch = new System.Diagnostics.Stopwatch(); 9 watch.Start(); 10 bool isContainsSameItem = IsSameWithForeach(arr); 11 Console.WriteLine(isContainsSameItem); 12 watch.Stop(); 13 Console.WriteLine("IsSameWithForeach 耗时:" + watch.ElapsedMilliseconds + "milliseconds"); 14 15 watch = new System.Diagnostics.Stopwatch(); 16 watch.Start(); 17 isContainsSameItem = IsSameWithSortAndCompare(arr); 18 Console.WriteLine(isContainsSameItem); 19 watch.Stop(); 20 Console.WriteLine("IsSameWithSortAndCompare 耗时:" + watch.ElapsedMilliseconds + "milliseconds"); 21 22 watch = new System.Diagnostics.Stopwatch(); 23 watch.Start(); 24 isContainsSameItem = IsSameWithHashSet(arr); 25 Console.WriteLine(isContainsSameItem); 26 watch.Stop(); 27 Console.WriteLine("IsSameWithHashSet 耗时:" + watch.ElapsedMilliseconds + "milliseconds"); 28 29 watch = new System.Diagnostics.Stopwatch(); 30 watch.Start(); 31 isContainsSameItem = IsSameWithArrayContains(arr); 32 Console.WriteLine(isContainsSameItem); 33 watch.Stop(); 34 Console.WriteLine("IsSameWithArrayContains 耗时:" + watch.ElapsedMilliseconds + "milliseconds"); 35 36 Console.ReadKey();
测试效果:
c#:判断一个数组元素中否有重复元素相关推荐
- Python课堂笔记之判断一个数组中是否含有数字0
判断一个数组中是否含有数字0的3种方法: lst1=[1,3,4] lst2=[0,6,7] lst3=[[1,3,4],[0,6,7]]#1.如果有0,True for i in range(2): ...
- php判断一个数组是否存在在另一个数组中
/*** ** 判断一个数组是否存在于另一个数组中** @param $arr* @param $allArr* @return boolean*/ function isAllExists($arr ...
- php数组是有序,php判断一个数组是否为有序的方法
php判断一个数组是否为有序的方法 本文实例讲述了php判断一个数组是否为有序的方法.分享给大家供大家参考.具体分析如下: 这段代码的时间复杂度为O(n) function JudegSortArra ...
- php发牌判断哪个玩家对子多,PHP判断一个数组是另一个数组子集的方法详解
本文实例讲述了PHP判断一个数组是另一个数组子集的方法.分享给大家供大家参考,具体如下: 前言 今天完成一个算法的过程中,有几个需求模块,其中就有判断$a数组是否是$b数组的子集,可能最近我写c比较多 ...
- 判断一个数组是否有序
一般来说,判断一个数组或序列是正序,倒序还是乱序,需要我们将这个数组完整的遍历一遍后才能得出答案,它不像折半查找那样只处理少量的数据便能得出结论,因为一段包含成千上万个元素的有序序列,哪怕将其中两个元 ...
- 每天一道LeetCode-----有序数组循环右移n位后,寻找最小值,数组中可能包含重复元素
Find Minimum in Rotated Sorted Array II 原题链接Find Minimum in Rotated Sorted Array II 一个有序数组循环右移n位,找到右 ...
- PHP如何判断一个数组是一维数组或者是二维数组?用什么函数?
如题:如何判断一个数组是一维数组或者是二维数组?用什么函数? 判断数量即可 <?php if (count($array) == count($array, 1)) {echo '是一维数组'; ...
- 数组的旋转——把一个数组最开始的若干个元素搬到数组的末尾
题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素. 例如数组[3,4,5,1,2]为[1,2,3,4,5]的一个 ...
- 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。(js代码)
1.题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素. 例如数组{3,4,5,1,2}为{1,2,3,4,5}的 ...
- 剑指offer:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。
剑指offer算法题 二分查找,旋转数组最小数字 题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转.输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素.例如数组[3, ...
最新文章
- 这是我见过最通俗易懂的 装饰者模式 讲解了!
- 实现jquery.ajax及原生的XMLHttpRequest调用WCF服务的方法
- QEMU — 编译安装指定的版本
- mxnet 配置gpu
- [bzoj2743]采花
- 14行代码AC_Break the Chocolate HDU-4112(数学推导+解析)
- asp mysql 连接字符串,在ASP中连接数据库(连接字符串)
- [Java]关于throw,throws,try{}catch(){}
- (王道408考研操作系统)第一章计算机系统概述-第一节1:操作系统基本概念以及目标和功能
- 教机器写代码:增强拓扑进化网络(NEAT)
- 聊聊Elasticsearch的CachedSupplier
- f分布表完整图_标准正态分布函数数值表怎么查?(加完整分布函数表)
- 关于动态规划的一点学习感想
- Yedda Twitter C# Library
- ubuntu_使用ros显示imu的状态(6)
- matlab 低级图形错误,matlab图形底层错误(matlab崩溃前的数据恢复)
- Dojo 学习--ADM
- 计算机桌面英文翻译,电脑显示器英语怎么说
- 我薅了四年的国内外免费服务器
- wso2_围绕开放标准改进WSO2 API Manager密钥管理体系结构
热门文章
- Gradient Descent
- 周记——20151221
- 12岁的B站,放慢脚步做社区
- 毕业设计c语言课程设计,毕业设计_c语言_课程设计.doc
- 计算机应用专业毕业感言,大学毕业感言一句话
- 吃土豆 递归分制算法(浪费时间)
- 记一道面试算法题: 某学校需要一个能给学领前儿童自动出三个数加减法的算术题的程序(此处省略一万个字)
- 摄影测量单像后方交会实验报告
- Bootstrap之折叠(Collapse)
- rtbeginreg.html文件,【答疑】安装3DMAX2014版本出现“Autodesk Licensing”的小窗口 - 视频教程线上学...