LeetCode H-Index II 数组+二分

来源:互联网 发布:内向工作知乎 编辑:程序博客网 时间:2024/05/18 21:43

思路:

根据上一题优化而来,既然是查找一个临界状态,又要求时间复杂度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;    }}
0 0
原创粉丝点击