码迷,mamicode.com
首页 > 编程语言 > 详细

找出长度为n的数组中重复的一个数字(数字范围在0~n-1) 不采用hashmap

时间:2018-12-20 14:16:01      阅读:239      评论:0      收藏:0      [点我收藏+]

标签:public   out   写法   交换   find   数组   ++   div   shm   

要求不采用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

标签:public   out   写法   交换   find   数组   ++   div   shm   

原文地址:https://www.cnblogs.com/moris5013/p/10148580.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!