原创 劍指Offer-替換空格Java

2、替換空格 題目描述: 請實現一個函數,將一個字符串中的每個空格替換成“%20”。例如,當字符串爲We Are Happy.則經過替換之後的字符串爲We%20Are%20Happy。 思路: 1、遍歷字符串判斷是否有空格,有則替

原创 劍指Offer-旋轉數組的最小數字Java

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

原创 劍指Offer-反轉鏈表Java

15、反轉鏈表 題目描述: 輸入一個鏈表,反轉鏈表後,輸出新鏈表的表頭。 思路: 表尾作爲新表頭,順序遍歷每個節點,將其插入新表頭後面。 /* public class ListNode { int val; Li

原创 劍指Offer-二叉樹的鏡像Java

18、二叉樹的鏡像 題目描述: 操作給定的二叉樹,將其變換爲源二叉樹的鏡像。 輸入描述: 二叉樹的鏡像定義:源二叉樹 8 / \ 6 10 / \ / \

原创 劍指Offer-棧的壓入彈出序列Java

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

原创 劍指Offer-從上往下打印二叉樹Java

22、從上往下打印二叉樹 題目描述: 從上往下打印出二叉樹的每個節點,同層節點從左至右打印。 思路: 用隊列存儲節點。 import java.util.ArrayList; /** public class TreeNode {

原创 劍指Offer-數值的整數次方Java

12、數值的整數次方 題目描述: 給定一個double類型的浮點數base和int類型的整數exponent。求base的exponent次方。保證base和exponent不同時爲0 思路: 把整數次方拆解成連乘,按指數分三種情

原创 劍指Offer-順時針打印矩陣Java

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

原创 劍指Offer-跳臺階Java

8、跳臺階 題目描述: 一隻青蛙一次可以跳上1級臺階,也可以跳上2級。求該青蛙跳上一個n級的臺階總共有多少種跳法(先後次序不同算不同的結果)。 思路: 找規律,發現是斐波那契數列,遞歸。 假設現在6個臺階,我們可以從第5跳一步到6

原创 劍指Offer-合併兩個排序的鏈表Java

16、合併兩個排序的鏈表 題目描述: 輸入兩個單調遞增的鏈表,輸出兩個鏈表合成後的鏈表,當然我們需要合成後的鏈表滿足單調不減規則。 思路: 遞歸。 /* public class ListNode { int val;

原创 劍指Offer-樹的子結構Java

17、樹的子結構 題目描述: 輸入兩棵二叉樹A,B,判斷B是不是A的子結構。(ps:我們約定空樹不是任意一個樹的子結構) 思路: 第一部分先判斷是否有相等的根節點。把root2根節點分別和root1的根節點、左孩子、右孩子逐一比較

原创 劍指Offer-二叉搜索樹的後序遍歷序列Java

23、二叉搜索樹的後序遍歷序列 題目描述: 輸入一個整數數組,判斷該數組是不是某二叉搜索樹的後序遍歷的結果。如果是則輸出Yes,否則輸出No。假設輸入的數組的任意兩個數字都互不相同。 思路: 先定位根節點,然後根據和根節點比較找到

原创 劍指Offer-1-20題刷題知識點總結Java

數組 第一題:二維數組中的查找 第六題:旋轉數組的最小數字 第十三題:調整數組順序使奇數位於偶數前面 第十九題:順時針打印矩陣 思考與總結: 在Java中二維數組判空要考慮三種情況 1、二維數組首地址是否爲空,即array=