All Downloads are FREE. Search and download functionalities are using the official Maven repository.

g0301_0400.s0334_increasing_triplet_subsequence.Solution Maven / Gradle / Ivy

There is a newer version: 1.38
Show newest version
package g0301_0400.s0334_increasing_triplet_subsequence;

// #Medium #Top_Interview_Questions #Array #Greedy #Data_Structure_II_Day_5_Array
// #2022_07_10_Time_2_ms_(99.33%)_Space_93.5_MB_(47.20%)

/**
 * 334 - Increasing Triplet Subsequence\.
 *
 * Medium
 *
 * Given an integer array `nums`, return `true` _if there exists a triple of indices_ `(i, j, k)` _such that_ `i < j < k` _and_ `nums[i] < nums[j] < nums[k]`. If no such indices exists, return `false`.
 *
 * **Example 1:**
 *
 * **Input:** nums = [1,2,3,4,5]
 *
 * **Output:** true
 *
 * **Explanation:** Any triplet where i < j < k is valid. 
 *
 * **Example 2:**
 *
 * **Input:** nums = [5,4,3,2,1]
 *
 * **Output:** false
 *
 * **Explanation:** No triplet exists. 
 *
 * **Example 3:**
 *
 * **Input:** nums = [2,1,5,0,4,6]
 *
 * **Output:** true
 *
 * **Explanation:** The triplet (3, 4, 5) is valid because nums[3] == 0 < nums[4] == 4 < nums[5] == 6. 
 *
 * **Constraints:**
 *
 * *   1 <= nums.length <= 5 * 105
 * *   -231 <= nums[i] <= 231 - 1
 *
 * **Follow up:** Could you implement a solution that runs in `O(n)` time complexity and `O(1)` space complexity?
**/
public class Solution {
    public boolean increasingTriplet(int[] nums) {
        int n = nums.length;
        int i = 0;
        int low = Integer.MAX_VALUE;
        int high = Integer.MAX_VALUE;
        while (i < n) {
            if (low >= nums[i]) {
                low = nums[i++];
            } else if (high >= nums[i]) {
                high = nums[i++];
            } else {
                return true;
            }
        }
        return false;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy