剑指offer:1.找出数组中重复的数(java版)
数组中重复的数:
题目:找出数组中重复的数,
题目描述:
在一个长度为n的数组里的所有数字都在0到n-1的范围内。
数组中某些数字是重复的,但不知道有几个数字是重复的。
也不知道每个数字重复几次。请找出数组中任意一个重复的数字。
例如,如果输入长度为7的数组{2,3,1,0,2,5,3},
那么对应的输出是重复的数字2或者3。
分析:
<一>
首先进行重新排序
然后从头进行扫描即可。
1.比较下标,如果下标index等于数组num[index]继续比较下一个
如果不等于:将index与num[index]比较:如果相等则这个数是重复的;如果不相等,
将index与num[index]交换,然后继续比较.....
如:[2,3,1,0,2,5,3]---->[1,3,2,0,2,5]----->[3,1,2,0,2,5,3]
------>[0,1,2,3,2,5]到扫到2时由于下标4与数值2不一致,再比较
2与下标为2中的数发现相等,即可以得到重复的数;

运行结果如下:

<二>
当然这个题也可以用hashmap解决:
遍历数组,采用hashmap存放每个元素,其中元素作为key存储,value为0。
当前遍历元素插入hashmap时,先检查hashmap中是否已经存在同样的key。
若存在,记录下该值,返回true;若不存在,存入map中,继续遍历,直到数组结束,返回false.、
<三>
如果要求不修改数组找出重复的数:
剑指offer:1.找出数组中重复的数(java版)的更多相关文章
- 【Java】 剑指offer(1) 找出数组中重复的数字
本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集 题目 在一个长度为n的数组里的所有数字都在0到n-1的范围内.数组中某些数字 ...
- 剑指Offer:找出数组中出现次数超过一半的元素
题目:找出数组中出现次数超过一半的元素 解法:每次删除数组中两个不同的元素,删除后,要查找的那个元素的个数仍然超过删除后的元素总数的一半 #include <stdio.h> int ha ...
- 【剑指offer】找出数组中任意重复的数字(不修改数组),C++实现
原创博文,转载请注明出处! # 题目 在一个长度为n+1的数组里的所有数字都在1~n的范围内,所以数组中至少有一个数字是重复的.请找出数组中任意一个重复的数字,但不能修改输入的数组.例如,如果输入长度 ...
- 【剑指offer】找出数组中任意一个重复的数字,C++实现
原创博文,转载请注明出处! # 题目 # 思路 对于长度为n的数组,范围为0~n-1的数字而言,如果不粗在重复数字,则排序后数组元素和数组角标相同.如果存在重复数字,则在排序的过程中会出现不同下标对应 ...
- 【剑指offer】找出数组中出现一次的两个数
2013-09-08 10:50:46 一个整型数组中,除了两个数字之外,其他数字都出现了2次,找出这两个只出现一次的数字,要求时间复杂度是O(N),空间复杂度是O(1). 小结: 任何数与0异或,结 ...
- 【剑指Offer】50、数组中重复的数字
题目描述: 在一个长度为n的数组里的所有数字都在0到n-1的范围内. 数组中某些数字是重复的,但不知道有几个数字是重复的.也不知道每个数字重复几次.请找出数组中任意一个重复的数字. 例如,如果 ...
- 剑指offer(50)数组中重复的数字
题目描述 在一个长度为n的数组里的所有数字都在0到n-1的范围内. 数组中某些数字是重复的,但不知道有几个数字是重复的.也不知道每个数字重复几次.请找出数组中任意一个重复的数字. 例如,如果输入长度为 ...
- 剑指offer五十之数组中重复的数字
一.题目 在一个长度为n的数组里的所有数字都在0到n-1的范围内. 数组中某些数字是重复的,但不知道有几个数字是重复的.也不知道每个数字重复几次.请找出数组中任意一个重复的数字. 例如,如果输入长度为 ...
- 剑指offer28:找出数组中超过一半的数字。
1 题目描述 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字.例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}.由于数字2在数组中出现了5次,超过数组长度的一半,因此输出 ...
随机推荐
- 每天学点SpringCloud(五):如何使用高可用的Eureka
前几篇文章我们讲了一下Eureka的基础使用,但是呢有一个很重要的问题,我们讲的都是单机版的情况,如果这个时候Eureka服务挂了的话,那么我们的服务提供者跟服务消费者岂不是都废了?服务提供者和消费者 ...
- 使用《JAVA面向对象编程》总结
抽象和封装 现实世界是“面向对象”的,面向对象就是采用“现实模拟” 的方法设计和开发程序. 面向对象设计是目前计算软件开发中最流行的技术.面向对象设计的过程就是抽象的过程. 类是对某一类事物的描述,是 ...
- 《http权威指南》读书笔记18
概述 最近对http很感兴趣,于是开始看<http权威指南>.别人都说这本书有点老了,而且内容太多.我个人觉得这本书写的太好了,非常长知识,让你知道关于http的很多概念,不仅告诉你怎么做 ...
- iOS----KVC和KVO 详解
一. KVC 1.KVC介绍 KVC 就是键值编码(key-value-coding). 2.KVC 的主要作用: (1)通过键值路径为对象的属性赋值.主要是可以为私有的属性赋值. AppleView ...
- linux mint 安装 opencv2.4
Download opencv https://github.com/opencv/opencv/tree/2.4 安装必要的依赖 sudo apt-get install build-essenti ...
- Xamarin.Android 嵌入web端界面
在程序中嵌入Web端界面. 首先在前台界面上创建一个webview <android.webkit.WebView android:layout_width="match_parent ...
- pylot测试工具环境搭建
1.下载Pylot:www.pylot.org/ 2. 安装Python 2.5 + (必须) 3. 安装wxPython(可选 - 用于GUI模式) 4. 安装numpy的(可选 - 用于报告以图表 ...
- Android UI(二)DridView的菜单
Jeff Lee blog: http://www.cnblogs.com/Alandre/ (泥沙砖瓦浆木匠),retain the url when reproduced ! Thanks ...
- go使用context包避免goroutine泄露问题
go是带内存自动回收的特性,因此内存一般不会泄漏.但是Goroutine确存在泄漏的情况,同时泄漏的Goroutine引用的内存同样无法被回收. 下面的程序中后台Goroutine向管道输入自然数序列 ...
- xargs原理剖析及用法详解
bash&shell系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html 学习这个xargs花了很长时间,在网上翻了很久也查了很多书关于 ...