遞增的三元子串行

2021-09-26 14:19:28 字數 947 閱讀 7641

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

分析:

首先是理解題目意思,arr[i]其次是分析題目:

目的 : 找到三個有序排列的數

步驟 : 先找到兩個相對有序的數 first second,再從剩餘的數中找大於second的數,找到則返回true,沒找到就繼續

如何確定 first 和 second 的值 : first儲存當前發現的最小值,second儲存大於first的最小值

什麼時候開始查詢大於second的數 : 每當 second 的值改變了的時候,說明first 和 second 的值一定是相對有序的,這時從剩餘的數裡面查詢大於second的數

複雜度分析:

最好的情況是o(n),最差的情況是o(n^2),平均下來還是o(n^2),大約等於 (陣列的逆序數)*(n^2)的複雜度。

class solution 

return false;

}};

遞增三元子串行

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

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