LeetCode 275. H-Index II
与H-Index思路相同,因为输入已经sort了,所以原来的代码去掉了sort,但是会TLE,于是把citation.size()放入一个变量中,这样就不用每次都调用一遍函数了,AC但是82test cases 1038ms,之前H-Index 81test cases 4ms。
1 class Solution { 2 public: 3 int hIndex(vector<int>& citations) { 4 int size = citations.size(); 5 for(int i = 0; i < size; ++i){ 6 if(citations[i] >= size - i) 7 return size - i; 8 } 9 return 0; 10 } 11 };
看了别人的代码,发现要用二分法,如果中间的citations[i]符合,那么取左半边部分,继续查找符合条件的i(取左边是因为虽然左边citations[i]更小,size-i更大,符合的可能性会小一些,但是size-i更大,即h可能会更大);如果中间的citations[i]不符合,那么取右半边部分,继续查找。
关于每次取左取右时取mid、mid-1、mid+1还是有些不清楚,留坑。