java实现找数组中重复数字
2017-08-18 14:36
453 查看
package offer; /* * 在长度为n的数组里所有数字都在0~n-1的范围之内。找出数组中的重复数字 * 时间复杂度O(n) 空间复杂度也是O(n) * */ public class FindDuplicate1 { public static void main(String[] args) { int numbers[]={0,1,2,3,4,5,1,2,3,6}; findDuplicate(numbers); } static void findDuplicate(int numbers[]) { if(numbers==null || numbers.length==0) return ; int numbers2[]=new int[numbers.length];//已经进行了自动的初始化 int i=0; for( i=0 ;i<numbers.length;i++) { if(++numbers2[numbers[i]]>1) { System.out.println(numbers[i]); break; } } if(i==numbers.length) System.out.println("No dulicate number"); } }
package offer; /** * 时间复杂度O(n) 空间复杂度也是O(1) */ public class FindDuplicate { public static void main(String[] args) { int numbers[] = { 0, 1, 2, 3, 4, 5, 1, 2, 3, 6 }; findDuplicate(numbers); } static void findDuplicate(int numbers[]) { if (numbers == null || numbers.length == 0) return; int i=0; for(i=0;i<numbers.length;i++) { if(numbers[i]!=i && numbers[numbers[i]]!=numbers[i]) swap(numbers[i],numbers[numbers[i]]); else if(numbers[i]!=i && numbers[numbers[i]]==numbers[i]) { System.out.println(numbers[i]); break; } } if(i==numbers.length) System.out.println("No dulicate number"); } static void swap(int number1,int number2) { int tmp=number1; number1=number2; number2=tmp; } }
相关文章推荐
- <剑指offer 面试题3> 数组中重复的数字(Java实现)
- java实现list清除重复的字符串;arraylist动态数组;角谷定理最终得1,找出10000以内哪个数字的步骤最长
- 数组中重复的数字java实现
- java 实现递归查找数组中的重复数字
- Java实现找出数组中重复的数字
- 数据结构与算法分析笔记与总结(java实现)--数组8:数组中重复的数字
- Java实现-删除排序数组中的重复数字2
- java 实现二分法查找出数组重复数字
- 数组中重复的数字(Java实现)
- Java实现-删除排序数组中的重复数字1
- ASP 无重复数字随机函数, 数组实现, 并应用于随机显示记录集 By shawl.qiu
- java实现——008旋转数组的最小数字
- java中实现向数组或list中添加不重复的值
- [java]一次for循环实现查询有序数组中所有重复的元素
- 可用的ASP无重复数字随机函数, 数组实现, 并应用于随机显示记录集
- 数组中有一个数字出现的次数超过了数组长度的一半,请找出这个数。java实现
- Java代码实现删除一个有序数组里面的重复元素
- java 两个int数组删除重复的数字,并返回删除后的数组
- JAVA实现随机无重复数字功能
- JAVA中实现随机无重复数字的功能