leetcode 334 遞增的三元子串行

2021-10-08 20:12:50 字數 1599 閱讀 1050

334. 遞增的三元子串行

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

演算法流程如下:

class

solution

:def

increasingtriplet

(self, nums: list[

int])-

>

bool:if

not nums:

return

false

n =len(nums)

if n <3:

return

false

i, j =0,

1while j < n and nums[i]

>= nums[j]

:#注意這裡是大於等於都不可以

nums[i]

= nums[j]

j +=

1if j < n:

first, second = nums[i]

, nums[j]

else

:return

false

for c in nums[j+1:

]:if c < first:

first = c

elif first < c < second:

second = c

elif second < c:

return

true

return

false

看了官方的解答,自己真菜。

主要是首先就是不用首先找到兩個遞數,它是直接在for迴圈中,從列表開始就開始找的。

class

solution

:def

increasingtriplet

(self, nums: list[

int])-

>

bool

: f_min =

float

('inf'

) s_min =

float

('inf'

)for i in

range

(len

(nums)):

if nums[i]

<= f_min:

f_min = nums[i]

elif nums[i]

<= s_min:

s_min = nums[i]

else

:return

true

return

false

遞增三元子串行LeetCode334

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

Leetcode 334 遞增的三元子串行

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

LeetCode 334 遞增的三元子串行

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