1. 程式人生 > >LeetCode:遞增的三元子序列

LeetCode:遞增的三元子序列

問題描述:
給定一個未排序的陣列,判斷這個陣列中是否存在長度為 3 的遞增子序列。

數學表示式如下:

如果存在這樣的 i, j, k, 且滿足 0 ≤ i < j < k ≤ n-1,
使得 arr[i] < arr[j] < arr[k] ,返回 true ; 否則返回 false 。
說明: 要求演算法的時間複雜度為 O(n),空間複雜度為 O(1) 。

示例 1:
輸入: [1,2,3,4,5]
輸出: true
示例 2:
輸入: [5,4,3,2,1]
輸出: false

public class Solution {
    public
static void main(String[] args) { // TODO Auto-generated method stub Solution a = new Solution (); int[] nums = new int[]{5,4,2,3,1,5,4}; boolean res = a.increasingTriplet(nums); System.out.println(res); } public boolean increasingTriplet(int[] nums) { if
(nums.length<3) return false; //定義兩個指標 int min = Integer.MAX_VALUE ;//第一個數的最小值 int mid = Integer.MAX_VALUE ;//中間數 for(int i = 0 ;i < nums.length;i++){ if(nums[i] <= min ){ min = nums[i]; }else if(nums[i] <= mid){ mid = nums[i];//當mid被賦值後,證明i前面一點存在比mid小的值,並且這個mid是比min大的值中最小的一個
}else { return true;//那麼當出現比mid大的數後,說明存在三個數為遞增序列 } } return false; } }