dp
array
]
Leetcode 0334. Increasing Triplet Subsequence
https://leetcode.com/problems/increasing-triplet-subsequence
This problem is special case of problem 300 Longest Increasing Subsequence, but here we are asked if this length is more or equal to 3. Let us use the same logic here: we keep two-elements array a, where:
a[0]is the smallest end among all increasing subsequences of length1.a[1]is smallest end among all increasing subsequences of length2. Note, thata[1] >= a[0]always.
We iterate over nums and check conditions: if elem < a[0], we can create 1 elements increasing subsecuense with smaller end. If a[0] < elem < a[1], we can update increasing subsequence of size 2. In other case we found subsequnce of length 3 and we can return True.
Complexity: time complexity is O(n): we iterate over our data once. Space complexity is O(1).
Remark: see my solution of problem 0300 Longest Increasing Subsequence: https://leetcode.com/problems/longest-increasing-subsequence/discuss/667975/Python-3-Lines-dp-with-binary-search-explained
class Solution:
def increasingTriplet(self, nums):
a = [float("inf")]*2
for elem in nums:
if elem < a[0] : a[0] = elem
if elem < a[1] and elem > a[0]: a[1] = elem
if elem > a[1] : return True
return False
If you like the solution, you can upvote it on leetcode discussion section: Problem 0334