leetcode334题 递增的三元子序列
给你一个整数数组 nums ,判断这个数组中是否存在长度为 3 的递增子序列。
如果存在这样的三元组下标 (i, j, k) 且满足 i < j < k ,使得 nums[i] < nums[j] < nums[k] ,返回 true ;否则,返回 false
我的思想:
遍历两次,第一次遍历,从倒数第一个开始,往左遍历,如果找到了一个比我小的,就给这个数组赋值为true。否则就替换成这个比我大的,继续遍历。
第二次遍历,从第一个开始,往右遍历,如果找到了一个比我大的,并且该位置数组赋值为true,则输出true。否则就替换成这个比我小的。
class Solution { public boolean increasingTriplet(int[] nums) { if (nums == null || nums.length < 3) { return false; } boolean [] have = new boolean[nums.length]; for (int m = nums[nums.length - 1], i = nums.length - 2; i >=0; --i) { if (m >nums[i]){ have[i] = true; } else { m = nums[i]; } } for (int m = nums[0],i = 1; i < nums.length; ++i) { if (m < nums[i]){ if (have[i]) return true; } else { m = nums[i]; } } return false; } }