題目:
對於乙個陣列,請設計乙個高效演算法計算需要排序的最短子陣列的長度。
給定乙個int陣列a和陣列的大小n,請返回乙個二元組,代表所求序列的長度。
(原序列位置從0開始標號,若原序列有序,返回0)。保證a中元素均為正整數。
思路:分別從
左->右:記錄最大元素值 比較最大元素值和當前遍歷元素的大小 如果 最大值 > 當前元素 記錄當前元素下標, 直至陣列遍歷完成。 —— index1
和右->左:記錄最小元素值 比較最小元素值和當前遍歷元素的大小 如果 最小值 < 當前元素 記錄當前元素下標, 直至陣列遍歷完成。 —— index2
最後返回 (index1 - index2 + 1)
注釋:如果原陣列是有序的 那麼返回0即可。
貼**:
int getmin(int a, int b)
int getmax(int a, int b)
int shortestsubsequence(vectora, int n)
max = getmax(max, a[i]);
} for(int i = n - 2; i >= 0; --i)
min = getmin(min, a[i]);
}
if (l_r_dx == 0 && r_l_dx == 0)
else
}
演算法 需要排序的最短子陣列長度
給定乙個無序陣列,求出需要排序的最短子陣列的長度。例如 arr 返回4,因為只有 5,3,4,2 需要排序。解決這個問題可以在時間複雜度為o n 額外空間複雜度為o 1 完成。初始化變數nominindex 1,從右向左遍歷,便利的過程記錄右側出現過的數的最小值,記為min。假設當前數為arr i ...
2 1 需排序的最短子陣列長度
題目描述 對於乙個無序陣列a,請設計乙個演算法,求出需要排序的最短子陣列的長度。給定乙個整數陣列a及它的大小n,請返回最短子陣列的長度。測試樣例 1,5,3,4,2,6,7 7 返回 4 1 2 這個題在牛客網上的講解我感覺是有點問題的,3因為預設了公升序排序!4如下實現對陣列 8,7,6,5,4,...
JAVA語言之最短子陣列長度
對於乙個陣列,請設計乙個高效演算法計算需要排序的最短子陣列的長度。給定乙個int陣列a和陣列的大小n,請返回乙個二元組,代表所求序列的長度。原序列位置從0開始標號,若原序列有序,返回0 保證a中元素均為正整數。測試樣例 1,4,6,5,9,10 6 返回 2 思路 用乙個max和min分別來遍歷整個...