LeetCode 遞增的三元子串行

2021-09-12 10:37:35 字數 807 閱讀 4432

給定乙個未排序的陣列,判斷這個陣列中是否存在長度為 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

==思路分析:==由於題目嚴格限制時間、空間,所以只能一邊掃瞄。使用兩個變數,分別儲存[0,i]中第一小值、第二小值(初始值為int_max)。

掃瞄陣列

如果 num <= firstmin 更新firstnum,繼續掃瞄

如果 num <= secondmin 更新secondmin,繼續掃瞄

返回true(因為三元遞增序列成功找到

LeetCode 遞增的三元子串行

問題描述 給定乙個未排序的陣列,判斷這個陣列中是否存在長度為 3 的遞增子串行。數學表示式如下 如果存在這樣的 i,j,k,且滿足 0 i j k n 1,使得 arr i arr j arr k 返回 true 否則返回 false 說明 要求演算法的時間複雜度為 o n 空間複雜度為 o 1 示...

leetcode 遞增的三元子串行

由於是要求的o n 的時間複雜度,所以暴力解法一定是不可以的,但是如果利用好中間狀態,就能解決好這道題。儲存乙個first作為我們現在認為比較小的數字,乙個second作為我們任務比較小的第二個數字,當遇到乙個比first更小的數字的時候我們不能立馬就去將其代替first,所以我們需要將其儲存下來,...

遞增三元子串行

如果存在這樣的 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 輸出 fa...