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
解题
背下来吧
func increasingTriplet(nums []int) bool {
if len(nums) < 3 {
return false
}
min, max := math.MaxInt32, math.MaxInt32
for _, v := range nums {
if min >= v {
min = v
} else if max >= v {
max = v
} else {
return true
}
}
return false
}