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

題目描述 輸入一個矩陣,按照從外向裏以順時針的順序依次打印出每一個數字,例如,如果輸入如下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,

原创 劍指offer-兩個鏈表的第一個公共結點

題目描述 輸入兩個鏈表,找出它們的第一個公共結點。(注意因爲傳入數據是鏈表,所以錯誤測試數據的提示是用其他方式顯示的,保證傳入數據是正確的) 思路 第一種思路就是遍歷一個鏈表的節點,然後跟另一個鏈表的所有節點比較是否相同,時間複

原创 劍指offer-反轉鏈表

題目描述 輸入一個鏈表,反轉鏈表後,輸出新鏈表的表頭。 思路 第一種方法就是設置pre(表示當前節點的上一個節點), next(表示當前節點的下一個節點),因爲我們要反轉鏈表,所以第一個節點經過反轉後就是最後一個節點,因此他指

原创 劍指offer-連續子數組的最大和

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

原创 劍指offer-二叉樹中和爲某一值的路徑

題目描述 輸入一顆二叉樹的跟節點和一個整數,打印出二叉樹中結點值的和爲輸入整數的所有路徑。路徑定義爲從樹的根結點開始往下一直到葉結點所經過的結點形成一條路徑。(注意: 在返回值的list中,數組長度大的數組靠前) 思路 DFS,根

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

題目描述 輸入一個整數,輸出該數二進制表示中1的個數。其中負數用補碼錶示。 思路 遇到的問題就是我再一次想把這個數字轉換爲二進制碼,但是其實計算機已經幫我們做了這個過程,轉換爲二進制數其實大多應用於高精度中 鑑於這個情況,我們可

原创 劍指offer-樹的子結構

題目描述 輸入兩棵二叉樹A,B,判斷B是不是A的子結構。(ps:我們約定空樹不是任意一個樹的子結構) 思路 涉及到樹的問題,大多都可以用遞歸的方法進行解決 首先判斷節點是否一樣,如果一樣,就遞歸判斷節點的左節點和右節點;如果不一

原创 劍指offer-二叉樹的鏡像

題目描述 操作給定的二叉樹,將其變換爲源二叉樹的鏡像。 思路 進行先序遍歷到某個節點,首先判斷這個節點是不是葉子結點,如果不是,就將這個節點的左右孩子節點進行交換,當所有的非葉子結點交換完畢後就得到鏡像二叉樹了 程序運行過程(如圖

原创 劍指offer-複雜鏈表的複製

題目描述 輸入一個複雜鏈表(每個節點中有節點值,以及兩個指針,一個指向下一個節點,另一個特殊指針指向任意一個節點),返回結果爲複製後複雜鏈表的head。(注意,輸出結果中請不要返回參數中的節點引用,否則判題程序會直接返回空) 思路