334. Increasing Triplet Subsequence
2016-02-16 14:25
288 查看
题目:
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
return
Given
return
题目大意是寻找数组中是否有长度为3的递增子数组。
解题思路采用动态规划思想。
dp[i]为以第i个元素为结尾的递增子数组长度。那么,对于任意比i小的j,如果nums[i]>nums[j],
dp[i]=max(dp[i],dp[j]+1)
如果可以得到某个dp[i]=3,那么返回true,遍历完不存在则返回false。
代码如下:
但是这样貌似时间复杂度和空间复杂度都比较高,但是还是AC了。。
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.
题目大意是寻找数组中是否有长度为3的递增子数组。
解题思路采用动态规划思想。
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; } };
但是这样貌似时间复杂度和空间复杂度都比较高,但是还是AC了。。
相关文章推荐
- leetcode Increasing Triplet Subsequence
- [原创]SOUI GDI+渲染引擎下的字体特效,抛砖引玉
- ignoring file ***missing required architecture armv7in file **** ignoring file ***missing required
- fuel7.0 openstack webui 默认密码查看
- UITextView头文件学习
- UIBezierPath精讲
- Enumerable.SequenceEqual
- UIViewController中所有的生命周期方法和调用时机
- Uncaught TypeError: Cannot read property 'value' of null
- Spark UI (基于Yarn) 分析与定制
- Android-节日短信送祝福(UI篇:1-主布局的基本实现)
- UICollectionView 简单使用
- 使用Core Animation优化UIKit性能
- poj 1458 Common Subsequence
- ngui一些场景切换的心得
- Negative value (-100) passed to setFirstResult
- ios:UIAlertView自动消失
- Java GUI做简易计算器
- Jenkins修改workspace和build目录
- 【CodeForces 339B】Red and Blue Balls 找规律