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 輸...