需求描述:已知一个长度为100的int型数组,并且每个元素的值大于等于1,并小于等于100,写出一个函数,判断该数组中是否存在重复元素。

这个是大概2年前参加面试的一道算法题,不算难,相信大家都有了自己的一个解法,但怎样才算具有最少时间复杂度和最小空间复杂度的解法呢?

class ArrayFindRepeat

{

private int[] _arr;

public ArrayFindRepeat(int[] arr)

{

this._arr = arr;

}

}

方法一

///

/// 最普通的思路,把每个元素和数组本身遍历一次

///

///

public bool IsContainRepeat1()

{

for (int i = 0; i < _arr.Length; i++)

{

for (int j = 0; j < _arr.Length; j++)

{

if (j != i) //排除依次循环的元素本身

{

if (_arr[j] == _arr[i])

return true;

}

}

}

return false;

}

方法二

///

/// 先排序,再遍历每个元素

///

///

public bool IsContainRepeat2()

{

var newArr = (from a in _arr

orderby a ascending

select a).ToArray();

for (int i = 0; i < newArr.Length; i++)

{

if (newArr[i] != i + 1)

return true;

}

return false;

}

方法三

///

/// 使用哈希表键不能重复的特性

///

///

public bool IsContainRepeat3()

{

HashSet ht = new HashSet();

foreach (int i in _arr)

{

if (!ht.Add(i))

{

return true;

}

}

return false;

}

方法四

///

/// 满足条件的数组只有一种情况,就是1-100,使用临时数组,做标记位的方法

///

///

public bool IsContainRepeat4()

{

int[] temp = new int[_arr.Length + 1];

for (int i = 0; i < _arr.Length; i++)

{

int a = _arr[i];

if (temp[a] != 0)

{

return true;

}

else

{

temp[a] = 1;

}

}

return false;

}

相信一定有更简单的解法,欢迎大家拍砖。

java查重精确算法_一个查重算法的多种实现思路相关推荐

  1. java查重小程序_”万能查重器“小程序

    //今天组长让我写一个查重的的程序来给一个词库查重 把相同的删除 //一开始我绞尽脑汁想用嵌套的for循环怎么都有bug 原因是&&和&的理解错误 //后来我想到了用Map集合 ...

  2. 并查集路径压缩_并查集(UnionFind)技巧总结

    什么是并查集 在计算机科学中,并查集是一种树型的数据结构,用于处理一些不交集(Disjoint Sets)的合并及查询问题.有一个联合-查找算法(Union-find Algorithm)定义了两个用 ...

  3. JAVA 判断简单密码算法_十道简单算法题二【Java实现】

    前言 清明不小心就拖了两天没更了-- 这是十道算法题的第二篇了-上一篇回顾:十道简单算法题 最近在回顾以前使用C写过的数据结构和算法的东西,发现自己的算法和数据结构是真的薄弱,现在用Java改写一下, ...

  4. java 哈希一致算法_一致哈希算法Java实现

    一致哈希算法(Consistent Hashing Algorithms)是一个分布式系统中常用的算法.传统的Hash算法当槽位(Slot)增减时,面临所有数据重新部署的问题,而一致哈希算法确可以保证 ...

  5. java 网页正文抽取算法_网页正文抽取算法 ContentExtractor

    软件介绍 简介 ContentExtractor 是一个开源的网页正文抽取工具,用JAVA实现,具有非常高的抽取精度. 算法 ContentExtractor的网页正文抽取算法使用的是CEPR,适用于 ...

  6. java贪心算法_来谈谈贪心算法

    前言 之前讲了动态规划,在翻阅资料的时候看到了不少谈论贪心算法的,这两种算法也很有相似之处,正好最近又做到了有关贪心的题,所以今天写篇文章来谈一谈. 贪心算法(英语:greedy algorithm) ...

  7. java 唯一id生成算法_唯一ID生成算法剖析

    在业务开发中,大量场景需要唯一ID来进行标识:用户需要唯一身份标识:商品需要唯一标识:消息需要唯一标识:事件需要唯一标识-等等,都需要全局唯一ID,尤其是分布式场景下. 唯一ID有哪些特性或者说要求呢 ...

  8. 15拆分成3个不同的自然数_一个简单的算法 - 将一个正整数拆分成指定几个正整数的组合...

    假设我们这里有个正整数18,这里需要把18拆分成1 2 3 5 10的组合,那么输出的结果应该是: ==> 10+5+3 eg:->79 ----->7*10+5+3+1 大数优先 ...

  9. java五子棋核心算法_五子棋的核心算法(转)

    五子棋是一种受大众广泛喜爱的游戏,其规则简单,变化多端,非常富有趣味性和消遣性.这里设计和实现了一个人机对下的五子棋程序,采用了博弈树的方法,应用了剪枝和最大最小树原理进行搜索发现最好的下子位置.介绍 ...

  10. python算法工程师需要学什么_一个优秀的算法工程师必须具备哪些素质?

    导言 怎样成为一名优秀的算法工程师?这是很多从事人工智能学术研究和产品研发的同学都关心的一个问题.面对市场对人才的大量需求与供给的严重不足,以及高薪水的诱惑,越来越多的人开始学习这个方向的技术,或者打 ...

最新文章

  1. 2022-2028年中国PVC糊树脂行业市场深度分析及市场规模预测报告
  2. 使用 .NET 实现 Ajax 长连接
  3. Python D6 if分支结构
  4. linux java c++,Java C++ 服务比较
  5. ASP.Net生成静态HTML页!
  6. Citrix产品及技术解析
  7. [转自 Flyingis]Geometry 对象浅析
  8. xamarin.android 控件,将Android View作为自定义控件集成到Xamarin.Forms
  9. 苹果内部文件曝光:iPhone SE3以外,还有大惊喜...
  10. maya为什么不能导出fbx_Maya在操作中最容易出现的几个问题,现在注意还来得及...
  11. JavaScript学习(三十二)— Keycode常用键位码对照表
  12. 中国丝裂原活化蛋白激酶8市场趋势报告、技术动态创新及市场预测
  13. Java 8 八年不倒、IntelliJ IDEA 力压 Eclipse,2022 年 Java 开发者都在用什么?
  14. Luogu P2068 统计和
  15. 寻找春天nbsp;九宫格日记-2014.04.26
  16. 电脑自动化考证难不难
  17. win7升级win10时报0x80072F8F - 0x20000错误处理
  18. 复活Google右键翻译方法及Google浏览器网页一键翻译
  19. 随机数生成器【欧拉常数】
  20. 产品经理的年终总结可以这样写

热门文章

  1. 服务器虚拟机怎么安装win7系统教程,虚拟机怎么安装系统?VMware虚拟机安装Win7和win10图文详细教程...
  2. java怎么加锁_JAVA多线程(3)——如何加锁
  3. 微信小程序 转发功能实例讲解
  4. java怎么把html转换成word,java 怎么把html 转换成Word
  5. 网站小图标制作及配置
  6. 论文笔记:Bridging Textual and Tabular Data for Cross-Domain Text-to-SQL Semantic Parsing
  7. bilibili ,B站视频预览缩略图实现分析
  8. win10键盘失效问题
  9. 一张图了解大数据概念,大数据应用场景总结
  10. 如何把Excel中表格复制粘贴到PPT中,并更改表格边框颜色