publicclassIncreasingTripletSubsequence{ /** * 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. * 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 */ publicbooleanincreasingTriplet(int[] nums){ int[] t = newint[3]; t[0] = Integer.MIN_VALUE; int idx = -1; for (int i=0; i<nums.length; i++){ if (idx == -1) t[++idx] = nums[i]; else{ if (nums[i] > t[idx]){ t[++idx] = nums[i]; } elseif (nums[i] < t[idx]){ if (idx == 1 || nums[i] < t[0]){ t[0] = nums[i]; } elseif (nums[i] > t[0] && nums[i] < t[1]){ t[i] = nums[i]; } } else{ continue; } } if (idx == 2){ returntrue; } } returnfalse; } }