https://leetcode.com/problems/increasing-triplet-subsequence/
Medium
Given an unsorted array return whether an increasing subsequence of length 3 exists or not in the array.
Formally the function should:
Return true if there exists i, j, k
such that arr[i] < arr[j] < arr[k] given 0 ≤ i < j < k ≤ n-1 else return false.
Note: Your algorithm should run in O(n) time complexity and O(1) space complexity.
Example 1:
Input: [1,2,3,4,5]
Output: true
Example 2:
Input: [5,4,3,2,1]
Output: false
- 比较tricky。利用if else语句从小到大判断,需要注意用<=判断,因为对数字都相等的case,返回为False。
- Concise Java solution with comments. - LeetCode Discuss
1 class Solution: 2 def increasingTriplet(self, nums: List[int]) -> bool: 3 min_num, a, b = float("inf"), float("inf"), float("inf") 4 5 for c in nums: 6 if c <= min_num: # pay attention to equal case 7 min_num = c 8 elif c <= b: 9 a, b = min_num, c 10 else: # a < b < c 11 return True 12 13 return False