[LeetCode]Increasing Triplet Subsequence
2016-03-04 10:45
393 查看
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个元素的数组记录3个递增子串。
当有新的元素比最大小时,替换到合适位置。
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个元素的数组记录3个递增子串。
当有新的元素比最大小时,替换到合适位置。
class Solution { public: bool increasingTriplet(vector<int>& nums) { if(nums.size()<=3) return false; int Len = 1; vector<int> Len_Min(4,0); Len_Min[1] = nums[0]; for(int i=1; i<nums.size(); ++i){ if(nums[i]>Len_Min[Len]){ Len++; if(Len>=3) return true; Len_Min[Len] = nums[i]; } else{//untill nums[i]<Len_Min[k],replace the min one. int k = Len; while(k>=1 && nums[i]<=Len_Min[k]) k--; Len_Min[k+1] = nums[i]; } } if(Len<3) return false; } };
相关文章推荐
- 让你明白response.sendRedirect()与request.getRequestDispatcher().forward()区别
- Easyui CSS式样重写
- IOS UIAlertController 弹框 (ios 9.0 后代替了UIAlertView弹框 和 UIActionSheet下弹框)
- android requestWindowFeature使用详解
- 从源码分析 对 非UI线程不允许访问UI元素的 理解
- UIAutomator remote debug方法
- Uiautomator使用
- EasyUI 的各种提示框消息框配置
- Android Studio 中遇到的Gradle build插件版本太低的问题:Plugin is too old
- SVN UUID 变更导致提交更新错误
- UIScrollView之检测滚动方向
- iOS学习笔记67-UIBezierPath精讲
- 慎用PHP$_REQUEST数组
- web开发中,需要用到的脚本---jque…
- PHP $_SERVER["QUERY_ST…
- question_018-JAVA之Map之TreeMap键为自定义对象
- mysqli->multi_query()多条语句的…
- mysqli_query和mysql_query有何区…
- include require include_on…
- UISearchController使用方法及注意事项