275. H Index II - cocoder39/coco39_LC GitHub Wiki

275. H-Index II

int hIndex(vector<int>& citations) {
        int sz = citations.size();
        int start = 0, end = sz; //[0, sz)
        while (start < end) {
            int mid = start + (end - start) / 2;
            if (citations[mid] >= sz - mid) {
                end = mid;
            }
            else { //citations[mid] < sz - mid
                start = mid + 1;
            }
        }
        return sz - start;
    }

if use template below, take care a corner case [0], which should return 0.

public int hIndex(int[] citations) {
        int len = citations.length;
        if (len == 0) {
            return 0;
        }
        int low = 0;
        int high = len - 1;
        while (high - low > 1) {
            int mid = low + (high - low) / 2;
            if (citations[mid] <= len - mid) {
                low = mid;
            } else {
                high = mid;
            }
        }
        
        return Math.max(Math.min(citations[low], len - low), Math.min(citations[high], len - high));
    }
⚠️ **GitHub.com Fallback** ⚠️