1. Use brute force:

  1. //TLE
  2. class Solution {
  3. public:
  4. int longestWPI(vector<int>& hours) {
  5. int longest = 0;
  6. for(int i = 0; i < hours.size(); i++){
  7. longest = max(longest, longestWPI(hours, i));
  8. }
  9. return longest;
  10. }
  11. private:
  12. int longestWPI(vector<int>& hours, int init){
  13. int longest = 0;
  14. int non_tiring = 0;
  15. int tiring = 0;
  16. for(int i = init; i < hours.size(); i++){
  17. if(hours[i] <= 8)
  18. non_tiring++;
  19. else
  20. tiring++;
  21. if(tiring > non_tiring)
  22. longest = i - init + 1;
  23. }
  24. return longest;
  25. }
  26. };

2. Use sliding window