<剑指offer 面试题3> 数组中重复的数字(Java实现)
来源:互联网 发布:大数据前沿技术 编辑:程序博客网 时间:2024/06/03 22:42
public class Interview3 {/** * 题目一:找出数组中重复的数字 * 在一个长度为N的数组里的所有数字都在0~n-1的范围内。 * 数组中某些数字是重复的,但不知道有几个数字重复了, * 也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。 *思路:1、对数组进行排序,然后遍历,相同的输出 * 2、插入到哈希表中 * 3、与下标进行匹配,交换后,如果都在各自的位置上则没有重复的,否则就能找出重复的 * * 下面是思路三的实现 */public static boolean duplicate(int nums[],int n,int []dumpli){//首先判断数组输入的合法性boolean result=false;if(nums==null||nums.length<=1||n<=1)return false;for(int i=0;i<n;i++){if(nums[i]<0||nums[i]>n)return false;}for(int i=0;i<n;i++){while(nums[i]!=i){if(nums[i]!=nums[nums[i]]){int t=nums[i];nums[i]=nums[nums[i]];nums[nums[i]]=nums[i];}else{dumpli[0]=nums[i];result = true;}}}return result;}/** * 题目二:不修改数组找出重复的数字 * 在一个长度为n+1的数组里的所有的数字都在1~n之间, * 所以数组中至少有一个数字式重复的,请找出数组中任一个重复的数字, * 但是不能修改输入的数组 * 思路:1、放到哈希表中 * 2、创建一个O(n)的辅助空间,复制到对应的下标下 * 3、二分查找法 数数组中1~m的数的个数与m+1~n的数字的个数 * 下面是思路3的实现 */public static int dumplication(int number[],int n){//判断输入的数组的合法性if(number==null||number.length==0)return -1;for(int i=0;i<number.length;i++){if(number[i]<1||number[i]>n)return -1;}int start=1;int end=n;while(start<=end){int mid=(start+end)/2;int count=countRange(number,n,start,end);if(end==start){if(count>1)return start;elsebreak;}if(count>(mid-start+1))end=mid;elsestart=mid+1;}return -1;}//统计在特定的区间内的数字的个数,比如数组中1-7内的数字出现的次数private static int countRange(int number[],int n,int start,int end){if(number==null||n<=0)return 0;int count=0;for(int i=0;i<number.length;i++){if(number[i]>=start&&number[i]<=end)count++;}return count;}}
阅读全文
0 0
- <剑指offer 面试题3> 数组中重复的数字(Java实现)
- 剑指offer--面试题3:数组中重复的数字
- 【剑指offer】面试题3:数组中重复的数字
- 【剑指offer】面试题3:数组中重复的数字
- 剑指offer 面试题3:数组中重复的数字
- 剑指offer面试题3-数组中重复的数字 java
- 剑指offer-面试题51:数组中重复的数字
- 剑指offer--面试题51:数组中重复的数字
- 剑指offer-面试题51-数组中重复的数字
- 剑指offer 面试题51 数组中重复的数字
- 剑指offer面试题[51]-数组中重复的数字
- 剑指offer面试题51 数组中重复的数字
- 剑指Offer面试题51(Java版):数组中重复的数字
- 剑指Offer面试题51(Java版):数组中重复的数字
- 剑指offer——面试题3:找出数组中重复的数字
- 【剑指Offer】面试题51:数字中重复的数字
- 剑指Offer面试题29:数组中出现次数超过一半的数字 Java实现
- 剑指Offer面试题38:数字在排序数组中出现的次数 Java实现
- 在Ubuntu系统、CPU模式下运行Faster R-cnn代码
- MVP系列-第2讲-MVP改进
- Codeforces Round #452 (Div. 2)
- 3.数据结构单链表之链表索引
- 课程设计--学生信息管理系统
- <剑指offer 面试题3> 数组中重复的数字(Java实现)
- 第六章 ALDS1_5_C:Koch Curve 科赫曲线
- js获取两个数组的合集和差集
- UE4 虚幻4 C++项目Complile Failed问题的解决方法
- ubuntu 安装MySQL5.7.18
- Python将图片写到音频频谱
- 为什么最难不过二叉树的算法出现在面试题中都会被应聘者抱怨?
- 勇敢者的游戏——VC
- centos 下安装 thrift(为部署 vddk 服务做准备)