原创 經典排序算法之快速排序

/*原理:選擇數組中的第一個元素爲基準數,進行一趟掃描後將所有小於基準數的元素放置在左邊數組;所有大於基準數的元素放置在右邊數組; 直到子數組中的元素小於或者等於一個元素,最後將其合併爲一個數組輸出*/ function quick_s

原创 經典排序算法之冒泡排序

/*原理是臨近的數字兩兩進行比較,按照從小到大或者從大到小的順序進行交換。 這樣一趟過去後,最大或最小的數字被交換到了最後一位。 然後再從頭開始進行兩兩比較交換,直到倒數第二位時結束*/ function buddleSort($a

原创 劍指offer:用兩個棧實現隊列

題目描述 用兩個棧來實現一個隊列,完成隊列的Push和Pop操作。 隊列中的元素爲int類型。 思路:熟悉棧中的push和pop操作即可完成對隊列的相應操作 代碼如下: var inStack=[]; var outStack=[];

原创 劍指Offer:跳臺階

題目描述 一隻青蛙一次可以跳上1級臺階,也可以跳上2級。求該青蛙跳上一個n級的臺階總共有多少種跳法(先後次序不同算不同的結果)。 根據題目描述:則可以做一下分析,當n=0時,jumpFloor(0)=0;當n=1時,則jumpFloor(

原创 劍指Offer:重建二叉樹

題目描述 輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列{1,2,4,7,3,5,6,8}和中序遍歷序列{4,7,2,1,5,3,8,6},則重建二叉樹

原创 劍指offer:旋轉數組中的最小數字

題目描述 把一個數組最開始的若干個元素搬到數組的末尾,我們稱之爲數組的旋轉。 輸入一個非減排序的數組的一個旋轉,輸出旋轉數組的最小元素。 例如數組{3,4,5,1,2}爲{1,2,3,4,5}的一個旋轉,該數組的最小值爲1。 NOTE:給

原创 劍指offer:從頭到尾打印鏈表

題目描述 輸入一個鏈表,按鏈表值從尾到頭的順序返回一個ArrayList。 /*function ListNode(x){ this.val = x;//節點的數據域 this.next = null;//節點的指針域

原创 劍指offer:二維數組中的查找

題目描述 在一個二維數組中(每個一維數組的長度相同),每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函數,輸入這樣的一個二維數組和一個整數,判斷數組中是否含有該整數。   思路:根據題目中的描述可知道數

原创 劍指offer:二進制中1的個數

題目描述 輸入一個整數,輸出該數二進制表示中1的個數。其中負數用補碼錶示。 思路:  思路:將n與n-1相與會把n的最右邊的1去掉,比如  * 1100&1011 = 1000  * 再讓sum++即可計算出有多少個1 function

原创 劍指offer:斐波那契數列

題目描述 大家都知道斐波那契數列,現在要求輸入一個整數n,請你輸出斐波那契數列的第n項(從0開始,第0項爲0)。 n<=39 思路:根據斐波那契數列的定義 斐波那契數列(Fibonacci sequence),又稱黃金分割數列、因數學家列

原创 劍指offer:矩形覆蓋

題目描述 我們可以用2*1的小矩形橫着或者豎着去覆蓋更大的矩形。請問用n個2*1的小矩形無重疊地覆蓋一個2*n的大矩形,總共有多少種方法? 思路:動手畫圖,2*1的小矩形都是一模一樣,所以不存在編號問題,即不難發現這其實也是一道斐波那契數

原创 劍指offer:替換空格

題目描述 請實現一個函數,將一個字符串中的每個空格替換成“%20”。例如,當字符串爲We Are Happy.則經過替換之後的字符串爲We%20Are%20Happy。   思路:本題考點則爲字符創與數組之間的處理,合理的使用js中Arr