您的位置:首页 > 产品设计 > UI/UE

Leetcode 334 Increasing Triplet Subsequence

2017-06-12 14:32 218 查看
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
.

找出unsorted 的序列里面有没有递增的三个elements

基本思想是顺序遍历一次,如果遇到比当前small更小的就更新small 如果有小于big但是大于small的就更新big

相当于是把中间的那个数变小,知道出现大于big 的数那么就是找到了

public class Solution {
public boolean increasingTriplet(int[] nums) {

int small = Integer.MAX_VALUE;
int big = Integer.MAX_VALUE;
for (int n : nums) {
if (n <= small)
{
small = n;
}
else if (n <= big)
{
big = n;
}
else {
return true;
}
}
return false;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: