牛客 奇怪的排序問題(單調棧 遍歷)

2021-10-12 09:57:49 字數 561 閱讀 2051

操場上有n個人排成一隊,這n個人身高互不相同,可將他們的身高視為乙個1到n的排列。

這時需要把隊伍變成公升序,也就是從矮到高排序。

每次可以選擇乙個人,讓這個人和在他身後的人比高矮,如果比對方高,則交換位置並繼續下一次比較,直到比對方矮或者已經在隊尾。

現在給出數n和乙個1到n的排列,求最少的選擇次數,使隊伍變為公升序

示例1輸入4

,[4,

1,2,

3]返回值1

備註:n<=10^

6資料報含乙個整數n和乙個含有n個元素的陣列,表示從隊頭到隊尾的人的身高。

輸出乙個整數表示答案。

class

solution

s.push(a[i]);

}return ans;}}

;

class

solution

return ans;}}

;

我的csdn部落格位址

奇怪的排序問題(牛客競賽)

時間限制 c c 5秒,其他語言10秒 空間限制 c c 262144k,其他語言524288k 64bit io format lld 題目描述 操場上有n個人排成一隊,這n個人身高互不相同,可將他們的身高視為乙個1到n的排列。這時需要把隊伍變成公升序,也就是從矮到高排序。每次可以選擇乙個人,讓這...

牛客網 sequence 線段樹 單調棧

官方題解 假設a中的元素互不相同,我們考慮a中的某個元素作為min的時刻。對於每個a i 我們找到左邊第乙個比它大的元素a l 右邊第乙個比它大的a r 那麼左端點在 l 1,i 右端點在 i,r 1 的區間min就為它。求l和r可以使用單調棧。考慮如何求某個a i 作為min的答案。如果a i 0...

牛客 雙棧排序 niop

菜雞還沒學二分圖。題意 給定乙個序列,問能否雙棧排序,如果能,請輸出字典序最小的方案 操作a 如果輸入序列不為空,將第乙個元素壓入棧s1 操作b 如果棧s1不為空,將s1棧頂元素彈出至輸出序列 操作c 如果輸入序列不為空,將第乙個元素壓入棧s2 操作d 如果棧s2不為空,將s2棧頂元素彈出至輸出序列...