Increasing Triplet Subsequence

2018-05-21  本文已影响0人  帽子和五朵玫瑰

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.<br

    public boolean increasingTriplet(int[] nums) {
         int min =Integer.MAX_VALUE;
         int mid =Integer.MAX_VALUE;
         for(int i=0;i<nums.length;i++) {
             if(nums[i]<min) {
                 min=nums[i];
             }else if(min<nums[i]&&nums[i]<mid) {
                 mid = nums[i];
             }else {
                 if(nums[i]>mid) return true;
             }
         }
         return false;
    }

用两个标志 min mid。

上一篇 下一篇

猜你喜欢

热点阅读