leetcode 遞增的三元子串行

2021-09-25 06:16:38 字數 1347 閱讀 3683

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

和second,如果遇到比second大的數字,則返回true。

具體**如下:

class

solution

:def

increasingtriplet

(self, nums: list[

int])-

>

bool

: first =

'#' second =

'#' _first =

'#'for i in

range

(len

(nums)):

if first ==

'#':

first = nums[i]

else

:if first < nums[i]

and second ==

'#':

second = nums[i]

elif first >= nums[i]

and second ==

'#':

first = nums[i]

elif first < nums[i]

and second !=

'#':

if second < nums[i]

:return

true

elif second >= nums[i]

: second = nums[i]

elif first >= nums[i]

and second !=

'#':

if _first ==

'#':

_first = nums[i]

elif _first !=

'#':

if nums[i]

<= _first:

_first = nums[i]

else

: first = _first

second = nums[i]

_first =

'#'return

false

LeetCode 遞增的三元子串行

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

LeetCode 遞增的三元子串行

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

遞增三元子串行

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