from typing import List# 这道题我是用动态规划的方法来作的,# 时间复杂度是O(n~2)空间复杂度是O(n)。# 定义一个列表,其中用来存放当前数比前面几个数递增大。class Solution: def increasingTriplet(self, nums: List[int]) -> bool: # 若是列表没哟三个数,直接返回False if len(nums) < 3 :return False # 定义一个列表,用来表示动态方程,这里将他们的初始值都设置成1 dp = [1 for i in range(len(nums))] # 进行遍历 for index1 in range(1,len(nums)): # 把当前数都和前边的数做比较,若是比某一个数大,就在它的基础上加上一 for index2 in range(0,index1): # 这里dp上每个位置,都表示这个数比前边几个递增数大。 if nums[index1] > nums[index2]: dp[index1] = max(dp[index1],dp[index2] + 1) #若是有递增三元组,就返回真,这样后边的就不用了遍历了 if dp[index1] >= 3:return True # 所有遍历完成,没有退出函数,就返回false else: return FalseA = Solution()print(A.increasingTriplet([1,2,3,4,5]))print(A.increasingTriplet([4,5,4,4]))print(A.increasingTriplet([1,2,-10,-8,-7]))