leetcode [334]Increasing Triplet Subsequence
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
题目大意:
判断在数组中是否存在三个连续上升的数字。
解法:
使用small记录第一个数字,big记录第二个数字,如果找到比这两个数字都大的数字,说明存在这么一个三个上升的数组。
java:
class Solution { public boolean increasingTriplet(int[] nums) { if (nums.length<3) return false; int small=Integer.MAX_VALUE,big=Integer.MAX_VALUE; for (int num:nums){ if (num<=small) small=num; else if (num<=big) big=num; else return true; } return false; } }