原创 Java中的形參和實參的區別以及傳值調用和傳引用調用

1,名詞解析 (1)形參:形參出現函數定義中,在整個函數體內都可以使用,離開函數則不能使用。 (2)實參:實參出現在主函數中,進入被調函數後,實參變量也不能使用。 (3)形參和實參的功能是做數據傳送。發生函數調用時,主調函數把實參的值傳送

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

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

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

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

原创 劍指offer——二叉搜索樹的後序遍歷序列

1,問題的描述 輸入一個整數數組,判斷該數組是不是某二叉搜索樹的後序遍歷的結果。如果是則輸出Yes,否則輸出No。假設輸入的數組的任意兩個數字都互不相同。 2,解題思路 二叉樹後序遍歷序列的最後一個值是根節點的值,二叉搜索樹後序遍歷序列的

原创 劍指offer——從上往下打印二叉樹(二叉樹的層次遍歷)

1,問題描述 從上往下打印出二叉樹的每個節點,同層節點從左至右打印。 2,解題思路 首先構建一個輔助隊列存放二叉樹節點,那麼接下來該如何層次遍歷呢?步驟如下: 將根節點添加到隊列中 循環判斷隊列是否爲空,若不爲空則執行以下循環體語句: 將

原创 劍指offer——棧的壓入、彈出序列(判斷棧的出入合法性)

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

原创 劍指offer——包含min函數的棧

1,問題描述 定義棧的數據結構,請在該類型中實現一個能夠得到棧中所含最小元素的min函數(時間複雜度應爲O(1))。 2,解題思路 em。。。。我覺得這道題的難點是題意理解上,只要把問題理解了,那解題思路還是較簡單的。 這道題是讓我們設計

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

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

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

1,問題描述 操作給定的二叉樹,將其變換爲源二叉樹的鏡像。 2,解題思路 這道題的思路倒是不難,就是利用遞歸的思路,如下: 先將根節點的左右子樹調換; 再遞歸處理根節點的左右子樹。 但是這個題有兩種特殊的二叉樹需要考慮到,一種是隻有左子樹

原创 劍指offer——樹的子結構

1,問題描述 輸入兩棵二叉樹A,B,判斷B是不是A的子結構。(ps:我們約定空樹不是任意一個樹的子結構) 2,解題思路(轉自:完美風暴4) (1)要查找樹A中是否存在和樹B結構一樣的子樹,我們可以分兩步:第一步在樹A中找到和B的根節點的

原创 劍指offer——合併兩個排序的鏈表

1,問題描述 輸入兩個單調遞增的鏈表,輸出兩個鏈表合成後的鏈表,當然我們需要合成後的鏈表滿足單調不減規則。 注:em。。。。。。。。。。這是我面試的一家公司的編程題,相對來說還是挺簡單的,遇到這樣的面試官,就偷着樂吧0.0 2,解題思路

原创 劍指offer——反轉鏈表

1,問題描述 輸入一個鏈表,反轉鏈表後,輸出新鏈表的表頭。 2,解題思路 (1)首先,保留鏈表頭節點的next節點,其中,設頭結點爲aNode(aNode = head),它的下一個節點爲bNode = aNode.next。 (2)然後

原创 劍指offer——調整數組順序使奇數位於偶數前面

1,部分面經 至今,雖然才面試了兩家公司(算法工程師方向),但是收穫還是不小的,其中一部分收穫就是關於編程題。記得我之前的一篇博客吐槽過,爲啥一些IT大牛在做編程題的時候,不用java或者python封裝的工具直接實現某些功能(例如:用j

原创 劍指offer——數值的整數次方

1,問題描述 給定一個double類型的浮點數base和int類型的整數exponent。求base的exponent次方。 2,解題思路 利用快速冪的解法,快速冪公式如下: 該方法體現的就是遞歸的思想,源碼如下: 3,源碼 publ

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

1,問題描述 輸入一個整數,輸出該數二進制表示中1的個數。其中負數用補碼錶示。 2,解題思路 (1)利用Integer.toBinaryString()方法先將整數(包含有符號整數)轉換爲二進制字符串str形式 (2)利用str.toCh