class Solution:
def find132pattern(self, nums: List[int]) -> bool:
s2 = []
s3 = -float("inf")
for s1 in nums[::-1]:
if s1<s3:
return True
while s2 and s1>s2[-1]:
s3 = s2.pop()
s2.append(s1)
return False
用双向链表,大大提升了效率
class Solution:
def find132pattern(self, nums: List[int]) -> bool:
s2 = collections.deque()
s3 = -float("inf")
for s1 in nums[::-1]:
if s1<s3:
return True
while s2 and s1>s2[-1]:
s3 = s2.pop()
s2.append(s1)
return False