兩次過 Lintcode 229 棧排序

2021-09-19 12:15:18 字數 943 閱讀 4999

請設計一種方法將乙個棧進行公升序排列 (最大的數在最上面)。

你可以使用另外乙個棧來輔助操作,但不可將這些數複製到另外乙個資料結構中 (如,陣列)。

給乙個棧:

| |

|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 並且把新長度...