fork download
  1. from typing import List, Optional, Dict, Set
  2.  
  3.  
  4. class Solution:
  5. def longest_alternating_peak_segment(self, nums: List[int]) -> int:
  6. best = 0
  7. n = len(nums)
  8. dp = [[[0 for i in range(3)] for k in range(2)] for j in range(n)]
  9. dp[0][0][0] = dp[0][1][0] = 1
  10. for i in range(1, n):
  11. dp[i][0][0] = dp[i][1][0] = 1
  12. if nums[i] == nums[i-1]:
  13. continue
  14. if nums[i] < nums[i-1]:
  15. sgn = 0
  16. else:
  17. sgn = 1
  18. dp[i][sgn ^ 1][0] = 1
  19. for start in range(3):
  20. if start == 0:
  21. dp[i][sgn][sgn + 1] = 2
  22. else:
  23. dp[i][sgn][start] = dp[i - 1][sgn ^ 1][start] + 1
  24. for i in range(n):
  25. best = max(best, dp[i][0][1])
  26. best = max(best, dp[i][1][2])
  27. if best <= 2:
  28. best = 0
  29. return best
Success #stdin #stdout 0.25s 16964KB
stdin
Standard input is empty
stdout
Standard output is empty