leetcode [334]Increasing Triplet Subsequence

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 < kn-1 else return false.

Note: Your algorithm should run in O(n) time complexity and O(1) space complexity.

Example 1:

Input: [1,2,3,4,5]
Output: true

Example 2:

Input: [5,4,3,2,1]
Output: false

题目大意:

判断在数组中是否存在三个连续上升的数字。

解法:

使用small记录第一个数字,big记录第二个数字,如果找到比这两个数字都大的数字,说明存在这么一个三个上升的数组。

java:

class Solution {
    public boolean increasingTriplet(int[] nums) {
        if (nums.length<3) return false;
        int small=Integer.MAX_VALUE,big=Integer.MAX_VALUE;
        for (int num:nums){
            if (num<=small) small=num;
            else if (num<=big) big=num;
            else return true;
        }
        return false;
    }
}
posted @ 2019-05-23 10:17  小白兔云  阅读(121)  评论(0编辑  收藏  举报