原创 劍指offerNo40 . 數組中只出現一次的數字(Java)

題目描述: 一個整型數組裏除了兩個數字之外,其他的數字都出現了兩次。請寫程序找出這兩個只出現一次的數字。 思路1:使用哈希表 package offer01; import org.omg.PortableInterceptor.IN

原创 劍指offerNo30. 連續子數組的最大和(Java)

題目描述: HZ偶爾會拿些專業問題來忽悠那些非計算機專業的同學。今天測試組開完會後,他又發話了:在古老的一維模式識別中,常常需要計算連續子向量的最大和,當向量全爲正數的時候,問題很好解決。但是,如果向量中包含負數,是否應該包含某個負數,並

原创 刷題No23. surrounded-regions(被圍繞的區域)(java)【數組】

題目: 現在有一個僅包含‘X’和‘O’的二維板,請捕獲所有的被‘X’包圍的區域, 捕獲一個被包圍區域的方法是將被包圍區域中的所有‘O’變成‘X’ 示例1:                                         

原创 刷題No28. copy-list-with-random-pointer(深拷貝一個鏈表)(java)【鏈表】

題目: 現在有一個這樣的鏈表:鏈表的每一個節點都附加了一個隨機指針,隨機指針可能指向鏈表中的任意一個節點或者指向空。 請對這個鏈表進行深拷貝。 思路: 先將原節點進行復制 再將原節點的random指針進行復制 從鏈表中將複製的節點拆分出來

原创 刷題No30. reverse-linked-list-ii(鏈表翻轉ii)(java)【鏈表】

題目: 將一個鏈表m位置到n位置之間的區間反轉,要求使用原地算法,並且在一次掃描之內完成反轉。 例如: 給出的鏈表爲1->2->3->4->5->NULL, m = 2 ,n = 4, 返回1->4->3->2->5->NULL. 注意:

原创 劍指offerNo19. 順時針打印矩陣(Java)

題目描述: 輸入一個矩陣,按照從外向裏以順時針的順序依次打印出每一個數字,例如,如果輸入如下4 X 4矩陣: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 則依次打印出數字1,2,3,4,8,12,16,1

原创 劍指offerNo11. 二進制中1的個數(Java)

題目描述: 輸入一個整數,輸出該數二進制表示中1的個數。其中負數用補碼錶示。 代碼: package offer; public class TestNo11 { public static void main(String[

原创 刷題No32. reverse-nodes-in-k-group(按組翻轉鏈表)(java)【鏈表】

題目: 將給出的鏈表中的節點每k個一組翻轉,返回翻轉後的鏈表 如果鏈表中的節點數不是k的倍數,將最後剩下的節點保持原樣 你不能更改節點中的值,只能更改節點本身。 只允許使用常數級的空間 例如: 給定的鏈表是1->2->3->4->5 對於

原创 劍指offerNo8. 跳臺階(Java)

題目描述: 一隻青蛙一次可以跳上1級臺階,也可以跳上2級。求該青蛙跳上一個n級的臺階總共有多少種跳法(先後次序不同算不同的結果)。 思路: 當n=1時:跳法 = 1 種  (1) 備註:1指的是一次跳一個臺階 當n=2時:跳法 = 2 種

原创 劍指offerNo9. 變態跳臺階(Java)

題目描述: 一隻青蛙一次可以跳上1級臺階,也可以跳上2級……它也可以跳上n級。求該青蛙跳上一個n級的臺階總共有多少種跳法。 思路: 當n=1時:跳法 = 1 種  (1) 備註:1指的是一次跳一個臺階 當n=2時:跳法 = 2 種  (1

原创 劍指offerNo15.反轉鏈表(Java)

題目描述: 輸入一個鏈表,反轉鏈表後,輸出新鏈表的表頭。 思路:用兩個指針,其中一個指針next用來保存head.next之後的節點, 然後用prev指針指向當前節點的前一個節點,將當前節點的next指向前一個節點。 最後將當前節點和當前

原创 刷題No21.best-time-to-buy-and-sell-stock-ii(買賣股票的最佳時機II)(java)【數組】

題目:假設你有一個數組,其中第i個元素表示某隻股票在第i天的價格。 設計一個算法來尋找最大的利潤。你可以完成任意數量的交易(例如,多次購買和出售股票的一股)。但是,你不能同時進行多個交易(即,你必須在再次購買之前賣出之前買的股票)。 示例

原创 刷題No25. reorder-list(重排鏈表)(java)【鏈表】

題目: 將給定的單鏈表L: L 0→L 1→…→L n-1→L n, 重新排序爲: L 0→L n →L 1→L n-1→L 2→L n-2→… 要求使用原地算法,並且不改變節點的值 例1: 對於給定的單鏈表{1,2,3,4},將其重新排

原创 劍指offerNo6. 旋轉數組的最小數字(Java)

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

原创 劍指offerNo21. 棧的壓入、彈出序列(Java)

題目描述: 輸入兩個整數序列,第一個序列表示棧的壓入順序,請判斷第二個序列是否可能爲該棧的彈出順序。假設壓入棧的所有數字均不相等。例如序列1,2,3,4,5是某棧的壓入順序,序列4,5,3,2,1是該壓棧序列對應的一個彈出序列,但4,3,