[哈希] leetcode 1124 Longest Well-Performing Interval

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;
    }
};

猜你喜欢

转载自www.cnblogs.com/fish1996/p/12275322.html