题目描述:
java编码实现在整数数组中找到重复的数字,要求复杂度低于O(N*N)
解题思路:
我用两种方法进行解答,其一是用桶的思想,其二是排序
程序代码:

public class Main {public static void main(String[] args) {int[] a = {1,1,6,5,5,5,-10,-10};
//    int[] a = {1,1,1,6,5,5,10,10};
//    int[] a = {-5,-5,-8,-8};
//    int[] a = {5};int[] b = new int[110];int maxn = -(1<<31);int minn = (1<<31) - 1;System.out.print("原数据:");for (int i : a) {System.out.print(i + " ");}System.out.println("\n第一种时间复杂度大约是O(n)或O(数组中最大值减最小值)");// 找出数组中最大值和最小值for (int i = 0; i < a.length; i ++) {if (a[i] > maxn) {maxn = a[i];}if (a[i] < minn) {minn = a[i];}}// 将a数组的值,以索引的思想存到b数组中for (int i = 0; i < a.length; i ++) {b[a[i] - minn] ++;}// 遍历b数组中的索引,找出出现次数大于1的for (int i = 0; i <= maxn - minn; i ++) {if (b[i] > 1) {System.out.print(i + minn + " ");}}System.out.println("\n第二种是先快排,然后找出出现多次的元素,再进行去重");// 如果数据差较大,先进行排序int len = a.length;int j = 0;if (len > 1) {quickSort(a,0,len - 1);for (int i = 1; i < len; i++) {if (a[i] == a[i-1]) {b[j ++] = a[i];}}}// 去重if (j > 0) {System.out.print(b[0]);for (int i = 1; i < j; i++) {if (b[i] != b[i - 1]) {System.out.print(" " + b[i]);}}}}static void quickSort(int a[],int left,int right) {int i, j, temp;i = left;j = right;if (i >= j) {return;}while (i < j) {while (i < j && a[j] >= a[left]) {j --;}while (i < j && a[i] <= a[left]) {i ++;}temp = a[i];a[i] = a[j];a[j] = temp;}temp = a[i];a[i] = a[left];a[left] = temp;quickSort(a,left,i - 1);quickSort(a,i + 1,right);}
}

运行结果:

笔试题:在整数数组中找到重复的数字相关推荐

  1. 如何在1到100的整数数组中找到缺失的数字

    有关编程面试的最常见问题之一就是:编写一个程序,用Java或任何其他语言查找数组中缺少的数字; 这种不仅在小型初创企业中被问到,而且还在谷歌,亚马逊,脸谱,微软等一些最大的技术公司中提出,主要是当他们 ...

  2. Java 高级算法——数组中查询重复的数字

    题目一:找到数组中重复的数字. 在一个长度为N的数组里的所有数字都在0--n-1的范围之内,数组中某些数字是重复的,但是不知道有几个数字是重复了,也不知道数字重复了几次,请找到数组中任意一个重复的数字 ...

  3. 找出数组中任一重复的数字

    找出数组中任一重复的数字 找出数组中任一重复的数字   在一个长度为 n 的数组 nums 里的所有数字都在 0-n-1 的范围内.数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重 ...

  4. Java 高级算法——数组中查询重复的数字之二

    题目二:不修改数组找到重复的数字. 在一个长度为n+1的数组中,所有的数字都在1-n的范围之内,所以数组中至少一个是重复的,请找到重复的数字,但不能修改输入的数组 方法一:创建一个长度为n+1的辅助数 ...

  5. 小米笔试题:无序数组中最小的k个数

    题目描述 链接:https://www.nowcoder.com/questionTerminal/ec2575fb877d41c9a33d9bab2694ba47?source=relative 来 ...

  6. python输入多个数字 找出只出现一个的数字_在python数组中找到接近给定数字的多个值...

    如果按照元素远离枢轴的顺序对数组进行排序,那么您将能够获取前k个元素,这些元素最接近您正在查看的元素 def k_closest(sample, pivot, k): return sorted(sa ...

  7. java打印数组中不重复的数字_java-在数组中查找重复项并仅打印一次

    我试图遍历数组并查找所有重复多次的数字: 例如:如果有1 1 2 3 4 它应打印出" 1重复不止一次"的字样 这是我的代码,到目前为止,我一直在尝试,但是它会打印所有重复项并继续 ...

  8. leetcode|剑指offter|面试题3:数组中重复的数字

    面试题03. 数组中重复的数字 本题要求找出数组中重复的数字. 在一个长度为 n 的数组 nums 里的所有数字都在 0-n-1 的范围内.数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每 ...

  9. 最高效寻找重复数据,如何高效率的查找到数组中的重复值

    /*** @author zc*/ public class FindRepeatNumber {/**题目:在指定的数组中寻找重复的数字,假定当前数组中只有两个数字是相同的,并且不能借助其他容器*/ ...

最新文章

  1. 于连生性聪颖的飞鸽传书
  2. linux原有的文件系统扩展,Linux VG扩展新增硬盘并新建文件系统
  3. Spring Cloud实战(二)-Spring Cloud Eureka
  4. 详解Transformer中Self-Attention以及Multi-Head Attention
  5. 国潮席卷!这家高端酒店品牌推出以唐风宋韵为基础的“新国风”酒店
  6. 计算机内存错误 要降频,电脑出现内存自动降频的问题该怎么办?
  7. 手机号格式校验和手机号添加空格
  8. 美国零售业初创公司排名前5位的软件开发公司
  9. pywifi破解密码
  10. Tmux 快捷键 速查表 简明教程
  11. 肖邦21首夜曲 简略介绍
  12. 云服务器安装虚拟机教程视频,从零开始安装VMwareTools的详细步骤(图文教程)
  13. 知往鉴今:Chromium近三年UXSS漏洞分析及缓解、预防和检测措施
  14. 【论文复现】一步步详解用TD3算法通关BipedalWalkerHardcore-v2环境
  15. 2019年终总结 千里之行始于足下
  16. 企业网站制作中应注意的几个问题
  17. JMeter 最大并发数
  18. 微信公众平台多客服系统怎么使用?
  19. N76E003之模拟EEPROM
  20. JavaScript offset

热门文章

  1. spring+mybatis 框架搭建
  2. linux crontab 详解
  3. OJ 注意点及知识点总结
  4. jQuery源码学习之五 (jQUery继承方法)
  5. 在整个数据库搜索某个字符串在哪个表的哪个字段中
  6. WordPress实践:上传文件时提示“缺少临时文件夹”
  7. 九度OJ1005题 一直WA??
  8. Windows Phone 7 文件下载进度和速度显示
  9. xForm应用开发手册
  10. 【elasticsearch】ES生命周期管理