思路:
根据上一题优化而来,既然是查找一个临界状态,又要求时间复杂度O(logN),用二分查找。
临界条件:找到一个 citation[i] == len - i 的点;
如果 citation[i] > len - i ,说明还可以往左试探;
如果 citation[i] < len - i ,说明还可以往右试探;
public class Solution {
public int hIndex(int[] citations) {
int len = citations.length;
int left = 0, right = len - 1;
while(left <= right) {
int mid = left + (right - left) / 2;
if(citations[mid] == len - mid) {
return len - mid;
}else if(citations[mid] < len - mid) {
left = mid + 1;
}else {
right = mid - 1;
}
}
return len - left;
}
}
使用二分查找解决临界状态问题
本文介绍了一种优化后的二分查找算法,用于解决查找特定临界状态的问题,确保时间复杂度为O(logN)。通过实现判断条件和调整搜索区间,有效地定位到所需的临界点。
793

被折叠的 条评论
为什么被折叠?



