leetcode H-Index (I、II)

来源:互联网 发布:赛尔网络个人业务天津 编辑:程序博客网 时间:2024/06/03 21:56
class Solution {// I1 public:    int hIndex(vector<int>& citations) {        sort(citations.begin(),citations.end());        int ret = 0;        for (int i = 0 ; i < citations.size(); ++i){            int tmp =  min (citations[i], (int)citations.size() - i);            if (ret <= tmp)                ret = tmp;            else                 break;        }        return ret;    }};
class Solution { // I2public:    int hIndex(vector<int>& citations) {        vector<int> count(citations.size() + 1, 0);        for (int i = 0; i < citations.size(); ++i){            if ( citations[i] < citations.size())                count[citations[i]] ++; // 统计数字出现的次数            else                count[citations.size()]++;         }        int ret = 0,            cnt = 0;        for (int i = 0; i < count.size(); ++i){            if (count[i]){                int tmp = min (i, (int)citations.size() - cnt);                if (ret <= tmp){                    ret = tmp;                    cnt += count[i];                }                else                    break;            }        }        return ret;    }};
class Solution { // IIpublic:    int hIndex(vector<int>& citations) {        if (citations.empty())              return 0;        int low = 0,            high = citations.size() - 1,            ret = 0;        while (low <= high){            int mid = (low + high) / 2;            if (citations[mid] >= citations.size() - mid)                high = mid - 1;            else                low = mid + 1;        }        return min ((int)citations.size() - low, citations[low]);    }};



0 0