原创 劍指offer-3.替換空格

題目描述:請實現一個函數,將一個字符串中的每個空格替換成“%20”。例如,當字符串爲A B.則經過替換之後的字符串爲A%20B。 解題思路: 由於一個空格,需要填充%20,因此,因此當遍歷到一個空格時,需要在尾部填充兩個任意字符

原创 劍指Offer-2.二維數組中的查找

題目描述:給定一個二維數組,其每一行從左到右遞增排序,從上到下也是遞增排序。給定一個數,判斷這個數是否在該二維數組中。要求時間複雜度 O(M + N),空間複雜度 O(1)。其中 M 爲行數,N 爲 列數。 Consider th

原创 劍指offer-6.重建二叉樹

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

原创 劍指offer-0.鏈表環入口節點

劍指offer——0.鏈表中環入口節點 **題目:**給一個鏈表,若其中包含環,請找出該鏈表的環的入口結點,否則,輸出null。 解題思路:通過設置兩個指針,快慢指針,其中快指針每次走兩步,滿指針每次走一步 草圖如下: 其中從開

原创 劍指offer-1.數字中重複的數字

劍指offer-1.數字中重複的數字 題目描述: 在一個長度爲 n 的數組裏的所有數字都在 0 到 n-1 的範圍內。數組中某些數字是重複的,但不知道有幾個數字是重複的,也不知道每個數字重複幾次。請找出數組中任意一個重複的數字。

原创 劍指offer-11.跳臺階

題目描述(初級) 一隻青蛙一次可以跳上 1 級臺階,也可以跳上 2 級。求該青蛙跳上一個 n 級的臺階總共有多少種跳法。 思路解析: 當 n = 1 時,只有一種跳法: 當 n = 2 時,有兩種跳法: 跳 n 階臺階,可以先跳

原创 劍指offer-10.矩形覆蓋

題目描述 我們可以用 2X1 的小矩形橫着或者豎着去覆蓋更大的矩形。請問用 n 個 2X1 的小矩形無重疊地覆蓋一個 2Xn 的大矩形,總共有多少種方法? 思路解析 當n爲1時,只有一種覆蓋方式 當n爲2時,有兩種覆蓋方式

原创 劍指offer-9.斐波那契數列

題目描述 求斐波那契數列的第 n 項,n <= 39。 思路解析:兩種方式 1.利用公式求取每一個f(n)的值,並利用一個n+1的數組來存儲每一個f(n)的值,此方法空間複雜度爲O(n) 2.利用兩個變量存儲f(n-1)和f(n

原创 劍指offer-8.兩個棧實現隊列

題目描述 用兩個棧來實現一個隊列,完成隊列的Push和Pop操作。 隊列中的元素爲int類型。 解題思路: 兩個棧,一個棧用於存儲數據(入棧)inStack,另一個棧用於彈出數據(出棧)outStack,入隊列則將數據存儲到inS

原创 劍指offer-7.二叉樹下一個節點

題目描述: 給定一個二叉樹和其中的一個結點,請找出中序遍歷順序的下一個結點並且返回。注意,樹中的結點不僅包含左右子結點,同時包含指向父結點的指針。 public class TreeLinkNode { publ

原创 劍指offer-4.從尾到頭打印鏈表

題目描述:輸入一個鏈表,按鏈表值從尾到頭的順序返回一個ArrayList。 解題思路: 1.通過遞歸來實現從尾到頭打印鏈表 2.通過重建逆序鏈表實現從尾到頭打印鏈表 3.利用棧先進後出的性質將鏈表元素全部入棧,實現從尾到頭打印

原创 劍指offer-7.替換空格

題目描述:請實現一個函數,將一個字符串中的每個空格替換成“%20”。例如,當字符串爲A B.則經過替換之後的字符串爲A%20B。 解題思路: 由於一個空格,需要填充%20,因此,因此當遍歷到一個空格時,需要在尾部填充兩個任意字符

原创 劍指offer-6.數字中重複的數字

劍指offer-6.數字中重複的數字 題目描述: 在一個長度爲 n 的數組裏的所有數字都在 0 到 n-1 的範圍內。數組中某些數字是重複的,但不知道有幾個數字是重複的,也不知道每個數字重複幾次。請找出數組中任意一個重複的數字。

原创 C++中前置++與後置++

C++中++i與i++區別 ++i與i++內部實現 //前置++ Operator Operator::operator++() { ++value; //內部成員變量 return *this; } //後置++ Operato

原创 劍指offer-2.替換空格

題目描述 請實現一個函數,將一個字符串中的每個空格替換成“%20”。例如,當字符串爲We Are Happy.則經過替換之後的字符串爲We%20Are%20Happy。 思路解析:通過StringBuilder來對字符串進行操作,先字符