1. 用兩個棧實現佇列
用兩個棧來實現乙個佇列,完成佇列的push和pop操作。 佇列中的元素為int型別。
class
solution
intpop()
}int res = stack2.
top();
stack2.
pop();
return res;
}private
: stack<
int> stack1;
stack<
int> stack2;
};
2.包含min函式的棧
定義棧的資料結構,請在該型別中實現乙個能夠得到棧中所含最小元素的min函式(時間複雜度應為o(1))。
class
solution
void
pop(
)int
top(
)int
min()}
;
3. 棧的壓入、彈出序列
輸入兩個整數序列,第乙個序列表示棧的壓入順序,請判斷第二個序列是否可能為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如序列1,2,3,4,5是某棧的壓入順序,序列4,5,3,2,1是該壓棧序列對應的乙個彈出序列,但4,3,5,1,2就不可能是該壓棧序列的彈出序列。(注意:這兩個序列的長度是相等的)
class
solution}if
(index2==popv.
size()
&& data.
empty()
) res =
true
;return res;}}
;
4.滑動視窗的最大值
給定乙個陣列和滑動視窗的大小,找出所有滑動視窗裡數值的最大值。例如,如果輸入陣列及滑動視窗的大小3,那麼一共存在6個滑動視窗,他們的最大值分別為; 針對陣列的滑動視窗有以下6個: , , , , , 。
class
solution
vector<
int>
maxslidingwindow
(vector<
int>
& nums,
int k)
res.
push_back
(q_max.
front()
);//別忘了最後乙個視窗的最大值
return res;}}
;
5. 撲克牌順子
ll今天心情特別好,因為他去買了一副撲克牌,發現裡面居然有2個大王,2個小王(一副牌原本是54張_)…他隨機從中抽出了5張牌,想測測自己的手氣,看看能不能抽到順子,如果抽到的話,他決定去買體育彩票,嘿嘿!!「紅心a,黑桃3,小王,大王,方片5」,「oh my god!」不是順子…ll不高興了,他想了想,決定大\小 王可以看成任何數字,並且a看作1,j為11,q為12,k為13。上面的5張牌就可以變成「1,2,3,4,5」(大小王分別看作2和4),「so lucky!」。ll決定去買體育彩票啦。 現在,要求你使用這幅牌模擬上面的過程,然後告訴我們ll的運氣如何, 如果牌能組成順子就輸出true,否則就輸出false。為了方便起見,你可以認為大小王是0。
class
solution
return
(numofzero>=numofgap)
?true
:false;}
};
6.圓圈中最後剩下的數
從0開始
class
solution
int c=
(m-1
)%n;
//第乙個要刪除的數的下標,本來應該是c=(0+m-1)%n;
while
(nums.
size()
>1)
return nums.
front()
;}};
//約瑟夫環數學解法,由遞推公式求解
class
solution
return flag;}}
;
7. 字元流中第乙個不重複的字元
請實現乙個函式用來找出字元流中第乙個只出現一次的字元。例如,當從字元流中只讀出前兩個字元"go"時,第乙個只出現一次的字元是"g"。當從該字元流中讀出前六個字元「google"時,第乙個只出現一次的字元是"l"。如果當前字元流沒有存在出現一次的字元,返回#字元。
class
solution
char()
return
'#';
}private
: unordered_map<
char
,int
> map;
string s;
};
8.醜數
把只包含質因子2、3和5的數稱作醜數(ugly number)。例如6、8都是醜數,但14不是,因為它包含質因子7。 習慣上我們把1當做是第乙個醜數。求按從小到大的順序的第n個醜數。
class
solution
intgetuglynumber_solution
(int index)
return res.
back()
;}};
棧和佇列 劍指offer
題目 定義棧的資料結構,請在該型別中實現乙個能夠得到棧最小元素的 min函式。class solution def init self self.elem def push self,node def pop self return self.elem.pop def top self return...
《劍指offer》 佇列和棧
一 兩個棧實現乙個佇列 題目 用兩個棧來實現乙個佇列,完成佇列的push和pop操作。佇列中的元素為int型別。解題思路 用乙個棧來存,另乙個棧出。需要考慮的情況如下 class solution int pop else if stack1.size 0 出隊 res stack2.top sta...
(四)劍指offer 棧與佇列篇
2.用兩個棧實現佇列 3.包含min函式的棧 4.棧的壓入 彈出序列 題目給定乙個陣列和滑動視窗的大小,找出所有滑動視窗裡數值的最大值。例如,如果輸入陣列及滑動視窗的大小3,那麼一共存在6個滑動視窗,他們的最大值分別為 針對陣列的滑動視窗有以下6個 答案思路 用佇列來存放滑動視窗裡邊的元素的下標,對...