public class HIndexII { // 1 100 public int hIndex(int[] citations) { int len = citations.length, left = 0, right = len - 1; while (left <= right) { int mid = left + ((right - left) >>> 1); int articles = len - mid; if (articles == citations[mid]) { // è¿æ¯ä¸´çç¹ï¼åå¾ä¸æç« æ°ä¼å¤§äºå¼ç¨ return articles; } else if (articles > citations[mid]) { // æç« æ°å¤§äºå¼ç¨ï¼ç»§ç»å¾ä¸èµ° left = mid + 1; } else { // æç« æ°å°äºå¼ç¨ï¼ç»§ç»å¾åèµ° right = mid - 1; } } return len - left; } }