题目:给定一个长度为n+1的int数组,其内元素为1到n,数组中除一个元素外其他元素都只出现一次,求重复出现的元素。要求时间小于O(n^2),空间为O(1)。
1、要求时间复杂度小于O(n^2),那么肯定存在一种算法时间复杂度为O(nlgn),想到二分查找。
public static int findDuplicate(int[] nums) {
if (nums.length == 0 || nums == null)return 0;
int low = 1, high = nums.length - 1, mid;
while (low < high) {
mid = low + (high - low) / 2;
in