Increasing Triplet Subsequence
2016-02-27 00:54
357 查看
Given an unsorted array return whether an increasing subsequence of length 3 exists or not in the array.
Formally the function should:
Your algorithm should run in O(n) time complexity and O(1) space complexity.
Examples:
Given
return
Given
return
Analyse:
First glance at the problem, I think of brute force, time complexity is O(n^3). Time limit exceeded.
View Code
After all those tries, I gave a o(n) version.
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.
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.
Analyse:
First glance at the problem, I think of brute force, time complexity is O(n^3). Time limit exceeded.
class Solution { public: bool increasingTriplet(vector<int>& nums) { if(nums.size() < 3) return false; for(int i = 0; i < nums.size() - 2; i++){ int b = i + 1; while(nums[b] <= nums[i] && b < nums.size() - 1) b++; while(b + 1 < nums.size() && nums[b] >= nums[b + 1] && nums[b + 1] > nums[i]) b++; if(b == nums.size() - 1) continue; int c = b + 1; while(c < nums.size() && nums[b] >= nums[c]) c++; if(c == nums.size()) continue; return true; } return false; } };
View Code
After all those tries, I gave a o(n) version.
class Solution { public: bool increasingTriplet(vector<int>& nums) { if(nums.size() < 3) return false; int a = INT_MAX, b = INT_MAX; for(int i = 0; i < nums.size(); i++){ a = min(nums[i], a); if(nums[i] > a) b = min(nums[i], b); if(nums[i] > b) return true; } return false; } };
相关文章推荐
- 备注 break continue return
- 解决“Dynamic Web Module 3.0 requires Java 1.6
- ios 代码创建UIToolBar
- 2016/2/26 <marquee></marquee>实现多种滚动效果
- APUE之对于系统中缺失的error.c文件的阶段性总结
- [1005]: Number Sequence
- The 6th Zhejiang Provincial Collegiate Programming Contest->Problem I:A Stack or A Queue?
- 线上使用阿里Druid连接池首次连接MySQL异常问题
- UIdynamic
- 如何使easyui在没有数据的情况下显示滚动条
- ios-UI控件精讲之【6】UIButton
- Animation动画详解(八)——PropertyValuesHolder与Keyframe
- MySQL提示:The server quit without updating PID file问题的解决办法
- 多个构造参数考虑使用Builder构造器模式
- IOS-OC-基本控件之UIPageControl
- IOS-OC-基本控件之UIPageControl
- iOS-OC-基本控件之UIPageControl
- UIDatePicker
- 图解Spark Transformation算子
- 动态树(Link Cut Tree) :SPOJ 375 Query on a tree