給定乙個無序陣列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,...