Leetcode[274]H指数&[904]水果成篮

Posted left4back

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode[274]H指数&[904]水果成篮相关的知识,希望对你有一定的参考价值。

最近忙于论文和实习,好久没有刷题了,之前立下的关于triplet loss的flag也莫得了。

某公司压力太大,已离职,希望利用好学生生涯最后一点时间,认认真真找个工作,扎扎实实提高自己技术水平。

其实这两道题都特别简单,均是自己在没有提示的情况下做出来的。

第一道题一个排序再一个遍历就结束了,我从没见过这么简单的medium,是因为我的方法太笨了吗?

bool compare(const int a, const int b) {return b < a;}
class Solution {
public:
    int hIndex(vector<int>& citations) {
        int len = citations.size();
        auto it = citations.begin();
        while (it != citations.end())
            if (*it == 0) it = citations.erase(it);
            else ++it;
        len = citations.size();
        if (len == 0) return 0;
        sort(citations.begin(), citations.end(), compare);
        for (int i = 0; i < len; ++i) {
            if (i+1 > citations[i])
                return i;
            else if (i+1 == len) return i+1;
        }
        return 0;
    }
};

第二道题也没什么复杂的,甚至某种意义上更简单,只需要一次O(n)的遍历就结束了,唯一需要注意的就是开始和结束的条件。

class Solution {
public:
    int totalFruit(vector<int>& tree) {
        int first = tree[0], second = -1;
        int i = 1, len = tree.size(), sameLen = 1, maxLen = 1, res = 1;
        while (i < len) {
            if (tree[i] == first || tree[i] == second) {
                if (tree[i-1] == tree[i]) ++sameLen;
                else sameLen = 1;
                ++maxLen;
                ++i;
            }
            else if (tree[i] != first && second < 0) {
                sameLen = 1;
                second = tree[i];
                ++maxLen;
                ++i;
            }
            else {
                if (res < maxLen) res = maxLen;
                maxLen = sameLen+1;
                sameLen = 1;
                first = tree[i-1];
                second = tree[i];
                ++i;
            }
            if (i == len && res < maxLen) res = maxLen;
        }
        return res;
    }
};

  

asdf

以上是关于Leetcode[274]H指数&[904]水果成篮的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode 274 H指数[排序 计数] HERODING的LeetCode之路

Leetcode 274.H指数

[LeetCode] 274. H-Index H指数

LeetCode Algorithm 274. H 指数

(Java) LeetCode 274. H-Index —— H指数

leetcode 274.H指数