找出重复的数java_剑指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.、
如果要求不修改数组找出重复的数:
按照二分查找的思路,将1-n分成两半,假如将1-n分成1-m和m+1到n。如果1~m中的数字的数目超过m,那就说明有重复数字;
否则,另一半中一定有重复的数字。我们可以继续把包含重复数字的区间继续二分,直到找到一个重复的数字。
找出重复的数java_剑指offer:1.找出数组中重复的数(java版)相关推荐
- 剑指Offer - 面试题3. 数组中重复的数字(哈希)
1. 题目 找出数组中重复的数字. 在一个长度为 n 的数组 nums 里的所有数字都在 0-n-1 的范围内.数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次.请找出数组 ...
- 剑指offer 面试题03. 数组中重复的数字
找出数组中重复的数字. 在一个长度为 n 的数组 nums 里的所有数字都在 0-n-1 的范围内.数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次.请找出数组中任意一个重 ...
- 剑指offer面试题03. 数组中重复的数字(Array)
题目描述 找出数组中重复的数字. 在一个长度为 n 的数组 nums 里的所有数字都在 0-n-1 的范围内.数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次.请找出数组中 ...
- 剑指Offer #01 二维数组中的查找(Java描述)
题目来源:牛客网-剑指Offer专题 题目地址:二维数组中的查找 题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一 ...
- 剑指offer面试题[51]-数组中重复的数字
题目描述 在一个长度为n的数组里的所有数字都在0到n-1的范围内. 数组中某些数字是重复的,但不知道有几个数字是重复的.也不知道每个数字重复几次.请找出数组中任意一个重复的数字. 例如,如果输入长度为 ...
- 【LeetCode笔记】240. 搜索二维矩阵II 剑指 Offer 04 二维数组中的查找(Java、指针)
文章目录 题目描述 思路 & 代码 更新版 题目描述 两道题一样的 有序 + 搜索,明摆着二分查找 但是比较懒-选取了题解里的指针做法= = 思路 & 代码 时间复杂度O(m + n) ...
- 剑指offer:二维数组中的查找
目录 题目 解题思路 具体代码 题目 题目链接 剑指offer:二维数组中的查找 题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺 ...
- 利用指针数组计算2个3行4列矩阵的和_[剑指 Offer] 04. 二维数组中的查找
难度:简单 题目链接:剑指 Offer 04. 二维数组中的查找 题目描述: 在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数, ...
- 【LeetCode】剑指 Offer 04. 二维数组中的查找
[LeetCode]剑指 Offer 04. 二维数组中的查找 文章目录 [LeetCode]剑指 Offer 04. 二维数组中的查找 package offer;public class Solu ...
- 剑指 Offer 04. 二维数组中的查找
剑指 Offer 04. 二维数组中的查找 在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个高效的函数,输入这样的一个二维数组和一个 ...
最新文章
- 2020春招即将来袭,送你110道Python面试真题
- nodejs获取当前url和url参数值
- java.lang.NoSuchMethodError: org.junit.runner.Description.getClassName()Ljava/lang/String;
- python自动化报表定时跑_POINTer分享:Python如何做报表自动化
- 2018 ICPC Asia Jakarta Regional Contest J. Future Generation 状压dp
- 前端学习(1045):todolist本地存储加载到页面
- C++:40---继承中类成员的变化关系
- 数据结构基础入门知识
- vrep中设置joint的位置、速度需要根据关节的模式来设置。
- 关于高效找工作的几条建议
- 用Python实现一个软件自动升级系统
- php计算时间差js,JS计算日期时间差
- 汇编语言学习:如何理解“物理地址=段地址X16+偏移地址”
- tomcat目录webapps介绍
- Chromium下载各类版本(pyppeteer爬虫下载地址)
- 乡愁 - 怀念老者余光中
- CSR867X sink例程的VM工程属性编译选项简析
- //编写一个学生类(Students),包括姓名(name)、性别(sex)、学号(num)、语文课(Chinese)、英语课(English)、 //数学课(Math)和平均值(avg)
- 图像锐化(增强)和边缘检测
- 解读青岛城市规划建设:5年内再添40座山头公园