šŸŒ• 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