最短排序子陣列

2021-07-25 06:42:52 字數 568 閱讀 1984

對於乙個陣列,請設計乙個高效演算法計算需要排序的最短子陣列的長度。

給定乙個int陣列a和陣列的大小n,請返回乙個二元組,代表所求序列的長度。(原序列位置從0開始標號,若原序列有序,返回0)。保證a中元素均為正整數。

測試樣例:

[1,4,6,5,9,10],6
返回:2

分析:求出需要排序的最短子陣列的右界(設定初值為max,後面元素比max大,說明是正常情況,max繼續向後走即可,若不比max大,那麼標記它為right_noneed_sort。由於中間可能獲得乙個大於max的,那麼需要繼續迴圈,可能還會更新right_noneed_sort,防止後面可能還需要排序),然後再求出左界,相減+1即為長度。

注意:元素相等的情況。

**如下:

class subsequence 

int min = a[n-1];

for(int j=n-2; j>=0; --j)

return right_noneed_sort - left_noneed_sort + 1;

}};

最短子陣列

對於乙個陣列,請設計乙個高效演算法計算需要排序的最短子陣列的長度。給定乙個int陣列a和陣列的大小n,請返回乙個二元組,代表所求序列的長度。原序列位置從0開始標號,若原序列有序,返回0 保證a中元素均為正整數。測試樣例 1,4,6,5,9,10 6 返回 2解題參考 我的提交 coding utf ...

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

演算法描述 1.從左往右找 當前值比max小 的一系列情況 初始 max arr 0 如果當前元素比max大,max就等於當前元素 如果當前元素比max小,max不變,然後繼續往後找,直到最後一次出現 當前值比max小 的情形,記下此時的下標為k。2.從右往左找 當前值比min大 的一系列情況 初始...

演算法題 重新排序的最短子陣列

給定乙個無序陣列nums,求出需要重新排序的最短子陣列 相似題 尋找陣列中元素nums ii 使得nums ii 大於左側所有的值,小於等於右側的值 思想 1.建立乙個乙個陣列right 2.後續遍歷陣列,right i 儲存從ii 1 size 1最小值 3.從左向右遍歷,定義乙個leftmax,...