334递增的三元子序列

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 False


A = Solution()
print(A.increasingTriplet([1,2,3,4,5]))
print(A.increasingTriplet([4,5,4,4]))
print(A.increasingTriplet([1,2,-10,-8,-7]))
posted @ 2020-08-05 20:56  月为暮  阅读(27)  评论(0编辑  收藏