Leetcode 334. Increasing Triplet Subsequence

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

 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
View Code

 

posted on 2019-07-07 18:33  浩然119  阅读(120)  评论(0编辑  收藏  举报