本文主要是介绍2021-07-05(287. 寻找重复数),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
class Solution {//时间换空间的写法public int findDuplicate(int[] nums) {int start=1;int end=nums.length-1;while(start<=end){int middle=((end-start)>>1)+start;int count=countRange(nums,start,middle);if(start==end){if(count>1){return start;}else{break;}}if(count>(middle-start+1)){end=middle;}else{start=middle+1;}}return -1;}int countRange(int[] nums,int start,int end){int count=0;for(int n:nums){if(n>=start&&n<=end){++count;}}return count;}
}
答案的二分查找是一个很标致的问题呢。这个用时间换空间的想法比较特殊,关键还是看面试官的要求。
这篇关于2021-07-05(287. 寻找重复数)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!