LeetCode Increasing Triplet Subsequence

来源:互联网 发布:java web filter 编辑:程序博客网 时间:2024/05/16 06:46

Description:

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.

Solution:

模拟LIS的做法,不过只需要记录最小的两个就好。

因为是递增,所以在符合 

if (nums[i] > min_1 && nums[i] < min_2)

情况下,再给第二小的赋值

min_2 = nums[i];

Code:

public class Solution {public boolean increasingTriplet(int[] nums) {int len = nums.length;if (len <= 2)return false;int min_1 = Integer.MAX_VALUE;int min_2 = Integer.MAX_VALUE;for (int i = 0; i < len; i++) {if (nums[i] > min_2) {return true;}if (nums[i] < min_1) {min_1 = nums[i];} else if (nums[i] > min_1 && nums[i] < min_2) {min_2 = nums[i];}}return false;}}


0 0