找出长度为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的范围内。 数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。 *请找出数组中任意一

长度为n值域为[0,n-1]的数组中重复的数字

数组中重复的数字 --剑指offer

面试题3:找出数组重复的数字

数组中重复的数字

找出数组中重复的数字(c语言)