Increasing Triplet Subsequence

Problem

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?

Solution

class Solution {
    public boolean increasingTriplet(int[] nums) {
        var one = Integer.MAX_VALUE;
        var two = Integer.MAX_VALUE;
        for (var n : nums) {
            if (n <= one) {
                one = n;
            } else if (n <= two) {
                two = n;
            } else {
                return true;
            }
        }
        return false;
    }
}

Recent posts from blogs that I like

Compiling Scheme to WebAssembly

One of my oldest open-source projects - Bob - has celebrated 15 a couple of months ago. Bob is a suite of implementations of the Scheme programming language in Python, including an interpreter, a compiler and a VM. Back then I was doing some hacking on CPython internals and was very curious about ho...

via Eli Bendersky

A painted weekend in the Alhambra 1767-1883

Exquisite Arabic Muslim art and architecture in Granada, painted in topographic views, and by Franz von Lenbach, Henri Regnault, Martín Rico, Childe Hassam, Tom Roberts and others.

via The Eclectic Light Company

On the preparations before writing an essay

Shooting raw footage

via Henrik Karlsson