面試題 03 03 堆盤子

2021-10-16 12:56:35 字數 1850 閱讀 1950

堆盤子。設想有一堆盤子,堆太高可能會倒下來。因此,在現實生活中,盤子堆到一定高度時,我們就會另外堆一堆盤子。請實現資料結構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,那...