題目描述
給定乙個無序的正整數陣列, 找出陣列中每個元素右邊第乙個比它大的數(若沒有,則返回-1)
思路
將陣列首元素的下標入棧從下標為1的元素開始遍歷陣列假設當前遍歷到的第i個元素是x,若x大於棧頂下標對應的元素,那麼這個棧頂下標對應元素的右邊第乙個比它大的數就是x,將棧頂下標出棧,然後繼續處理剩下的元素,直到棧為空或者不再大於棧頂下標對應的元素如果當前遍歷到的陣列元素不大於棧頂下標對應的陣列元素, 那就直接入棧
**實現
vector<
int>
findfirstbignum
(vector<
int>
& v)
stack<
int> st;
st.push(0
);for(
int i =
1; i < len; i++
) st.
push
(i);
}return res;
}
歡迎加入每日一題,每天分享一道高頻面試題。
陣列中每個位置右邊第乙個比它大的數
給定乙個陣列,o n 時間複雜度求出所有元素右邊第乙個大於該元素的值。樣例輸入 1,5,3,6,4,8,9,10,2 樣例輸出 5,6,6,8,8,9,10,1,1 樣例輸入 8,2,5,4,3,9,7,2,5 樣例輸出 9,5,9,9,9,1,1,5,1 題目的終點當然是 o 1 時間,也就是遍歷...
js中取陣列第乙個元素
var a 1,2,2,3,4 console.log a a.shift console.log a 5 1,2,2,3,4 4 2,2,3,4 pop 刪除原陣列最後一項,並返回刪除元素的值 如果陣列為空則返回undefined shift 刪除原陣列第一項 相當於lpop push 將引數新增...
最右邊第乙個比當前大的NUS 2586單調棧
給出一組資料,求出各個位置第乙個比自己大的位置,0代表沒有。1 2 3 1 1 1 1 4 5 2 3 8 8 8 8 8 9 0 我們暴力辦法就是乙個乙個比較,時間複雜度n n。如果中間插了1億個1,則是個天文數字,所以需要使用單調棧。思想 如果空棧或者當前位置值小於等於棧頂值,則入棧該位置。否則...