堆盤子。設想有一堆盤子,堆太高可能會倒下來。因此,在現實生活中,盤子堆到一定高度時,我們就會另外堆一堆盤子。請實現資料結構setofstacks,模擬這種行為。setofstacks應該由多個棧組成,並且在前乙個棧填滿時新建乙個棧。此外,setofstacks.
push
()和setofstacks.
pop(
)應該與普通棧的操作方法相同(也就是說,pop
()返回的值,應該跟只有乙個棧時的情況一樣)。 高階:實現乙個popat
(int index)方法,根據指定的子棧,執行pop操作。
當某個棧為空時,應當刪除該棧。當棧中沒有元素或不存在該棧時,pop,popat 應返回 -
1.示例1
: 輸入:
["stackofplates"
,"push"
,"push"
,"popat"
,"pop"
,"pop"][
[1],
[1],
[2],
[1],
,[]]
輸出:[null, null, null,2,
1,-1
]示例2
: 輸入:
["stackofplates"
,"push"
,"push"
,"push"
,"popat"
,"popat"
,"popat"][
[2],
[1],
[2],
[3],
[0],
[0],
[0]]
輸出:[null, null, null, null,2,
1,3]
class
stackofplates
void
push
(int val)
//棧空或者乙個棧放滿新建棧陣列
if(stk.
empty()
|| idx.
back()
== n)
auto
&topstk =
*stk.
back()
; topstk[
++idx.
back()
]= val;
//.back();返回的的是最後乙個元素的引用。
}int
pop(
)auto
&topstk =
*stk.
back()
;int res = topstk[idx.
back()
--];if
(idx.
back()
==0)return res;
}int
popat
(int index)
auto
&idxstk =
*stk[index]
;int res = idxstk[idx[index]--]
;if(idx[index]==0
)return res;}}
;/**
* your stackofplates object will be instantiated and called as such:
* stackofplates* obj = new stackofplates(cap);
* obj->push(val);
* int param_2 = obj->pop();
* int param_3 = obj->popat(index);
*/
面試題 堆和佇列
堆和佇列是一種資料結構,可以用來儲存資料,他們兩者的主要區別是 堆是先進後出的資料結構,即先入棧的資料後出,最後入棧的資料最先出 佇列的先進先出,先入佇列的資料先出。在面試中會要求使用鍊錶或者陣列寫乙個棧或者佇列,本文採用鍊錶寫棧和佇列,並列出需要注意的要點。首先是使用鍊錶實現入棧 出棧和棧的大小。...
面試題 PHP面試題
建議 比如是系統配置,缺少了無法執行,自然使用 require 如果某一段程式少了,只是少了統計 訪問的,不是必不可少的。可以使用 include 而加不加 once 就是效率上的區別,雖然系統會幫你考慮只包含一次,但系統的判斷會降低效率,因此,更應該在開發之初,把目錄結構調整高好,盡量不使用 on...
面試題 騰訊2012面試題
問題描述 例如手機朋友網有n個伺服器,為了方便使用者的訪問會在伺服器上快取資料,因此使用者每次訪問的時候最好能保持同一臺伺服器。已有的做法是根據serveripindex qqnum n 得到請求的伺服器,這種方法很方便將使用者分到不同的伺服器上去。但是如果一台伺服器死掉了,那麼n就變為了n 1,那...