演算法基礎之需排序的子陣列長度是多少2

2021-10-06 01:59:47 字數 608 閱讀 7005

給定乙個無序陣列arr,求出需要排序的最短子陣列的長度,對子陣列排序後能使得整個陣列有序,即為需要排序的陣列。例如:arr=[1,5,3,4,2,6,7]返回4,因為只有[5,3,4,2]需要排序。

#include

using

namespace std;

intmain()

;int p1=-1

;int p2=-1

;int max=arr[0]

;int min=arr[n-1]

;//擴充套件右端點,更新歷史最高,只要出現比歷史最高低的,就應該將右邊界擴充套件到此處

for(

int i=

0;i)//找左端點:更新歷史最低,只要出現比歷史最低高的,就應該將左邊界擴充套件到此處

for(

int i=n-

1;i>=

0;i--)if

(p1==-1

) cout<<0;

else

cout<<

(p2-p1+1)

;//從左往右遍歷,小於最低點更新,從右往左遍歷,大於最高點更新

return0;

}

演算法 需要排序的最短子陣列長度

給定乙個無序陣列,求出需要排序的最短子陣列的長度。例如 arr 返回4,因為只有 5,3,4,2 需要排序。解決這個問題可以在時間複雜度為o n 額外空間複雜度為o 1 完成。初始化變數nominindex 1,從右向左遍歷,便利的過程記錄右側出現過的數的最小值,記為min。假設當前數為arr i ...

陣列 長度最小的子陣列

給定乙個含有n個正整數的陣列和乙個正整數s 找出該陣列中滿足其和 s的長度最小的連續子陣列。如果不存在符合條件的連續子陣列,返回 0。示例 輸入 s 7,nums 2,3,1,2,4,3 輸出 2解釋 子陣列 4,3 是該條件下的長度最小的連續子陣列。高階 如果你已經完成了o n 時間複雜度的解法,...

2 1 需排序的最短子陣列長度

題目描述 對於乙個無序陣列a,請設計乙個演算法,求出需要排序的最短子陣列的長度。給定乙個整數陣列a及它的大小n,請返回最短子陣列的長度。測試樣例 1,5,3,4,2,6,7 7 返回 4 1 2 這個題在牛客網上的講解我感覺是有點問題的,3因為預設了公升序排序!4如下實現對陣列 8,7,6,5,4,...