請設計一種方法將乙個棧進行公升序排列 (最大的數在最上面)。
你可以使用另外乙個棧來輔助操作,但不可將這些數複製到另外乙個資料結構中 (如,陣列)。
給乙個棧:
| |
|3||1|
|2||4|
-
排序之後:
| |
|4||3|
|2||1|
-
棧會被序列化為[4,2,1,3]
,也就是說最右邊是棧頂。
時間複雜度為o(n^2)的演算法也可以通過測試
類似於漢諾塔問題。利用兩個棧倒來倒去,最終完成排序。
把原stack1的數push到另乙個stack2中,push的原則是大的數在下面,如果遇到要push的值比stack2的top大的話,就把stack1要push的值先暫存為num,然後將stack2的值pop出來,放到stack1中,直到要push進去的數num是stack2目前最小的。按這樣迴圈直至stack1為空。
把stack2的數按順序push到stack1中,直到stack2為空。此時stack1中的數就是排好序的。
}//最後將temp倒進stack中,即為公升序
while(!temp.isempty())
stack.push(temp.pop());}}
二刷:
public class solution else
}while(!stk1.isempty())
stk.push(stk1.pop());}}
兩次過 Lintcode 56 兩數之和
給乙個整數陣列,找到兩個數使得他們的和等於乙個給定的數 target。你需要實現的函式twosum需要返回這兩個數的下標,並且第乙個下標小於第二個下標。注意這裡下標的範圍是 0 到 n 1。example1 給出 numbers 2,7,11,15 target 9,返回 0,1 example2 ...
兩次過 Lintcode 1209 構造矩形
對於乙個web開發者,如何設計頁面大小很重要。所以,給定乙個矩形大小,設計其長 l 寬 w 使其滿足如下要求 1.矩形區域大小需要和給定目標相等。2.寬度w不大於長度l,也即l w.3.長和寬的差異盡可能的小。返回設計好的長度l和寬度w。樣例 輸入 4 輸出 2,2 解釋 目標區域是4,所有可能的構...
兩次過 Lintcode 212 空格替換
設計一種方法,將乙個字串中的所有空格替換成 20。你可以假設該字串有足夠的空間來加入新的字元,且你得到的是 真實的 字元長度。你的程式還需要返回被替換後的字串的長度。對於字串 mr john smith 長度為13 替換空格之後,引數中的字串需要變為 mr 20john 20smith 並且把新長度...