šŸŒ• 275. H ꌇꕰ II

åžä½›ē«„å­2022幓10月10ę—„
  • algorithm
  • Array
  • äŗŒåˆ†
å°äŗŽ 1 分钟

šŸŒ• 275. H ꌇꕰ II

难度: šŸŒ•

é—®é¢˜ęčæ°

img_7.png


解法

class Solution {
    public int hIndex(int[] citations) {
        // ę€č·Æļ¼š
        // äŗŒåˆ†ļ¼Œę‰¾åˆ°ęœ€å¤§ēš„ hļ¼Œä½æå¾— [len - h] >= h
        // å³ļ¼Œę‰¾åˆ°ęœ€å°ēš„ iļ¼Œä½æå¾— [i] >= len - i, h = len - i
        int len = citations.length;
        if(citations[len - 1] == 0) {
            return 0;
        }
        int i = mySol(citations, 0, len);
        return len - i;
    }

    private int mySol(int[] array, int left, int right) {
        // é€’å½’ē»ˆę­¢ę”ä»¶
        int len = array.length;
        if(left >= right) {
            if(array[left] >= len - left) {
                return left;
            } else {
                return left + 1;
            }
        }
        if(left == right - 1) {
            if(array[left] >= len - left) {
                return left;
            } else if(array[right] >= len - right){
                return right;
            } else {
                return right + 1;
            }
        }
        
        int mid = left + ((right - left) >> 1);
        if(array[mid] >= len - mid) {
            return mySol(array, left, mid);
        } else {
            return mySol(array, mid + 1, right);
        }
    }
}

输出

img_6.png

äøŠę¬”ē¼–č¾‘äŗŽ: 2022/10/10 äø‹åˆ8:43:48
č“”ēŒ®č€…: liuxianzhishou