[哈希] leetcode 1124 Longest Well-Performing Interval

…衆ロ難τιáo~ 提交于 2020-02-08 01:18:19

https://leetcode.com/problems/longest-well-performing-interval/

        将满足条件的视为+1,不满足的视为-1,计算前缀和。该题可以转换为计算和大于0的最小区间。

class Solution {
public:
    int longestWPI(vector<int>& hours) {
        unordered_map<int,int> m;
        m[0] = -1;
        int days = 0;
        int result = 0;
        for(int i = 0;i < hours.size();i++) // end
        {
            if(hours[i] > 8) days += 1;
            else days -= 1;
            if(days > 0)
            {
                result = max(result ,i + 1);
            }
            else
            {
                if(m.find(days) == m.end())
                {   
                    m[days] = i;
                }
                int expect = days - 1;
                if(m.find(expect) != m.end())
                {
                    result = max(result, i - m[expect]);
                }

            }

        }
        return result;
    }
};

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!