找出长度为n的数组中重复的一个数字(数字范围在0~n-1) 不采用hashmap
Posted moris5013
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了找出长度为n的数组中重复的一个数字(数字范围在0~n-1) 不采用hashmap相关的知识,希望对你有一定的参考价值。
要求不采用hashmap
public static void main(String[] args) { int[] nums = { 1, 2, 4, 3, 0 }; System.out.println(findDuplicate(nums)); Arrays.stream(nums).forEach(System.out::print); } public static int findDuplicate(int[] nums) { int len = nums.length; //注意这里的for循环写法,在交换元素后,还要进行判断 for (int i = 0; i < len;) { if (nums[i] != i) { // 不相等 int temp = nums[i]; if (temp == nums[temp]) { return temp; } nums[i] = nums[temp]; nums[temp] = temp; } else { i++; } } return -1; }
以上是关于找出长度为n的数组中重复的一个数字(数字范围在0~n-1) 不采用hashmap的主要内容,如果未能解决你的问题,请参考以下文章
剑指offer(Java版)第一题:在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。 *请找出数组中任意一