Java solution in O(n) time


  • 0
    A

    public class Solution {

    public int hIndex(int[] citations) {
        int size = citations.length;
        int count[] = new int[size + 1];
        for(int i = 0; i < size; i++){
        	if (citations[i] >= size) {
    			count[size]++;
    		}else{
    			count[citations[i]]++;
    		}
        }
        
        for(int i = size - 1; i > 0; i--){
        	count[i] += count[i+1];
        }
        
        for (int i = size; i > 0; i--) {
    		if (count[i] >= i) {
    			return i;
    		}
    	}
        
        return 0;
    }
    

    }


  • 0
    S

    Hi,

    I came across a situation: given citations = [3, 1, 7, 8, 9]. What will be the answer be?

    According to the definition of h-index on Wikipedia: "A scientist has index h if h of his/her N papers have at least h citations each, and the other N − h papers have no more than h citations each."

    When h=3, the definition will be "A scientist has index 3 if 3 of his/her 5 papers have at least 3 citations each, and the other 2 papers have no more than 3 citations each." Obviously wrong....

    When h=4, the definition will be "A scientist has index 4 if 4 of his/her 5 papers have at least 4 citations each, and the other 1 papers have no more than 4 citations each." Obviously wrong....

    When h=2, the definition will be "A scientist has index 2 if 2 of his/her 5 papers have at least 2 citations each, and the other 3 papers have no more than 3 citations each." Obviously wrong....


  • 0
    A

    yes,you are right. Not all the citations have an answer,but maybe all the tests that leetcode setted have an answer.


Log in to reply
 

Looks like your connection to LeetCode Discuss was lost, please wait while we try to reconnect.