334. Increasing Triplet Subsequence
来源:互联网 发布:steam mac中文游戏 编辑:程序博客网 时间:2024/05/21 22:49
题目:
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.
Your algorithm should run in O(n) time complexity and O(1) space complexity.
Examples:
Given [1, 2, 3, 4, 5]
,
return true
.
Given [5, 4, 3, 2, 1]
,
return false
.
解题思路采用动态规划思想。
dp[i]为以第i个元素为结尾的递增子数组长度。那么,对于任意比i小的j,如果nums[i]>nums[j],
dp[i]=max(dp[i],dp[j]+1)
如果可以得到某个dp[i]=3,那么返回true,遍历完不存在则返回false。
代码如下:
class Solution {public: bool increasingTriplet(vector<int>& nums) { int n=nums.size(); if(n<3) return false; vector<int> dp(n,1); for(int i=1;i<n;i++){ for(int j=0;j<i;j++){ if(nums[j]<nums[i]){ dp[i]=max(dp[i],dp[j]+1); if(dp[i]==3) return true; } } } return false; }};
0 0
- 334. Increasing Triplet Subsequence
- 334. Increasing Triplet Subsequence
- 334. Increasing Triplet Subsequence
- 334. Increasing Triplet Subsequence
- 334. Increasing Triplet Subsequence
- 334. Increasing Triplet Subsequence
- 334. Increasing Triplet Subsequence
- 334. Increasing Triplet Subsequence
- 334. Increasing Triplet Subsequence
- 334. Increasing Triplet Subsequence
- 334. Increasing Triplet Subsequence
- 334. Increasing Triplet Subsequence
- 334. Increasing Triplet Subsequence
- 334. Increasing Triplet Subsequence
- 334. Increasing Triplet Subsequence
- 334. Increasing Triplet Subsequence
- 334. Increasing Triplet Subsequence
- 334. Increasing Triplet Subsequence
- gcc -I -L -l区别
- 内核双链表 list_entry实现
- 单链表
- c#操作XML文件的通用方法
- docker 容器中不支持中文的解决方法
- 334. Increasing Triplet Subsequence
- C语言练习题---指针数组中查找字符
- Image Type
- iOS archive(归档)的总结
- 用递归方法对二叉树进行先序、中序和后序遍历
- expression="execution(* cn.**.service.*.*(..))"
- 谈iOS多线程(NSThread、NSOperation、GCD)编程
- 滑动关闭由MenuDrawer生成的侧滑菜单
- gradle官方文档官网