原创 劍指Offer學習-面試題22:鏈表中倒數第K個節點

/** * 鏈表中倒數第K個節點 * <p> * 遍歷二次的方法:先遍歷一次計算鏈表的長度len,在遍歷一次找到len-k * 遍歷一次的方法:設置快慢兩個指針,讓快指針先走k步,然後慢

原创 劍指Offer學習-面試題32:從上到下打印二叉樹(二叉樹的層次遍歷)

/** * 從上到下打印二叉樹(二叉樹的層次遍歷) * * @param root */ public void printFromTopToBottom(TreeNode roo

原创 劍指Offer學習-面試題24:反轉鏈表

/** * 反轉鏈表 * * @param head * @return */ public ListNode reverseListNode(ListNode head

原创 劍指Offer學習-面試題26:樹的子結構

/** * 樹的子結構 * * @param a * @param b * @return */ public boolean hasSubtree(TreeN

原创 劍指Offer學習-面試題27:二叉樹的鏡像

/** * 二叉樹的鏡像 * <p> * 如果一個節點左右節點都不爲空,則交換左右節點 * * @param root */ public void mirro

原创 劍指Offer學習-面試題33:二叉搜索樹的後序遍歷序列

/** * 二叉搜索樹的後序遍歷序列 * * @return */ public boolean verifySquenceOfBST(int[] arr) { i

原创 劍指Offer學習-面試題29:順時針打印矩陣

/** * 順時針打印矩陣 * * @param arr */ public void printMatrixClockwisely(int[][] arr) {

原创 劍指Offer學習-面試題28:對稱的二叉樹

/** * 對稱的二叉樹 * <p> * 只需要判斷左子樹是否和右子樹相等就行 * * @param root * @return */ public

原创 劍指Offer學習-面試題25:合併兩個排序的鏈表

/** * 合併兩個排序的鏈表 * 這裏我選擇讓所有的節點往a鏈表合併 * 設置一個前驅節點,當a小於cur時,cur直接下一個 * 當a不小於cur時,先記錄b的下一個節點next,然後

原创 劍指Offer學習-面試題15:二進制中1的個數

/** * 二進制中1的個數 * <p> * 請實現一個函數,輸入一個整數,輸出該二進制表示中1的個數 * <p> * n = 111111111111 * 1=000

原创 劍指Offer學習-面試題16:數值的整數次方

/** * 數值的整數次方 * <p> * 實現函數double power(double base, int n) 求base的n次方,不得使用庫函數,同時不需要考慮大數問題 *

原创 劍指Offer學習-面試題17:打印從1到最大的n位數

/** * 打印從1到最大的n位數 * * @param n */ public void print1ToMaxOfNDigits(int n) { char[]

原创 劍指Offer學習-面試題12:矩陣中的路徑

/** * 矩陣中的路徑 * 請設計一個函數,用來判斷在一個矩陣中是否存在一條包含某字符串所有的路徑,路徑可以從矩陣中的任意一格移動,每一步可以在矩陣中向左,右,上,下移動. * 如果一條路徑經過了

原创 劍指Offer學習-面試題14:剪繩子

/** * 剪繩子 * 給你一根長度爲n的繩子,請把繩子剪成m段(m,n都是整數 n>1並且m>1)每段繩子的長度爲k[0],k[1]...k[m] * 請計算k[0]*k[1]*...*k[m]可

原创 劍指Offer學習-面試題11:旋轉數組的最小數字

/** * 旋轉數組的最小數字 * 把一個數組最開始的若干個元素搬到數組的末尾,我們稱爲數組的旋轉。輸入一個遞增排序的數組的一個旋轉,輸出旋轉數組的最小元素。 * <p> * 採用二分的方