原创 劍指offer | 鏈表中環的入口結點

鏈表中環的入口結點 描述 給一個鏈表,若其中包含環,請找出該鏈表的環的入口結點,否則,輸出null。 代碼 (Java) public class Solution { public ListNode EntryNodeO

原创 劍指offer | 表示數值的字符串

表示數值的字符串 描述 請實現一個函數用來判斷字符串是否表示數值(包括整數和小數)。例如,字符串"+100",“5e2”,"-123",“3.1416"和”-1E-16"都表示數值。 但是"12e",“1a3.14”,“1.2.3

原创 劍指offer | 機器人的運動範圍

機器人的運動範圍 描述 地上有一個m行和n列的方格。一個機器人從座標(0,0)的格子開始移動,每一次只能向左,右,上,下四個方向移動一格,但是不能進入行座標和列座標的數位之和大於k的格子。 例如,當k爲18時,機器人能夠進入方格(

原创 劍指offer | 把數組排成最小的數

把數組排成最小的數 描述 輸入一個正整數數組,把數組裏所有數字拼接起來排成一個數,打印能拼接出的所有數字中最小的一個。例如輸入數組{3,32,321},則打印出這三個數字能排成的最小數字爲321323。 代碼 (Java) imp

原创 劍指offer | 刪除排序鏈表中重複的結點

刪除鏈表中重複的結點 描述 在一個排序的鏈表中,存在重複的結點,請刪除該鏈表中重複的結點,重複的結點不保留,返回鏈表頭指針。 例如,鏈表1->2->3->3->4->4->5 處理後爲 1->2->5。 代碼 (Java) /*

原创 劍指offer | 對稱的二叉樹

對稱的二叉樹 描述 請實現一個函數,用來判斷一顆二叉樹是不是對稱的。注意,如果一個二叉樹同此二叉樹的鏡像是同樣的,定義其爲對稱的。 代碼 (Java) public class Solution { boolean isS

原创 劍指offer | 剪繩子

剪繩子 描述 給你一根長度爲n的繩子,請把繩子剪成整數長的m段(m、n都是整數,n>1並且m>1),每段繩子的長度記爲k[0],k[1],…,k[m]。請問k[0]xk[1]x…xk[m]可能的最大乘積是多少?例如,當繩子的長度是

原创 劍指offer | 矩陣中的路徑

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

原创 劍指offer | 滑動窗口的最大值

滑動窗口的最大值 描述 給定一個數組和滑動窗口的大小,找出所有滑動窗口裏數值的最大值。例如,如果輸入數組{2,3,4,2,6,2,5,1}及滑動窗口的大小3,那麼一共存在6個滑動窗口,他們的最大值分別爲{4,4,6,6,6,5};

原创 劍指offer | 序列化二叉樹

序列化二叉樹 描述 請實現兩個函數,分別用來序列化和反序列化二叉樹 二叉樹的序列化是指:把一棵二叉樹按照某種遍歷方式的結果以某種格式保存爲字符串,從而使得內存中建立起來的二叉樹可以持久保存。序列化可以基於先序、中序、後序、層序的

原创 劍指offer | 按之字形順序打印二叉樹

按之字形順序打印二叉樹 描述 請實現一個函數按照之字形打印二叉樹,即第一行按照從左到右的順序打印,第二層按照從右至左的順序打印,第三行按照從左到右的順序打印,其他行以此類推。 代碼 (Java) import java.util.

原创 劍指offer | 二叉搜索樹的第k個結點

二叉搜索樹的第k個結點 描述 給定一棵二叉搜索樹,請找出其中的第k小的結點。例如, (5,3,7,2,4,6,8) 中,按結點數值大小順序第三小結點的值爲4。 代碼 (Java) public class Solution

原创 劍指offer | 數據流中的中位數

數據流中的中位數 描述 如何得到一個數據流中的中位數?如果從數據流中讀出奇數個數值,那麼中位數就是所有數值排序之後位於中間的數值。如果從數據流中讀出偶數個數值,那麼中位數就是所有數值排序之後中間兩個數的平均值。我們使用Insert

原创 劍指offer | 把二叉樹打印成多行

把二叉樹打印成多行 描述 從上到下按層打印二叉樹,同一層結點從左至右輸出。每一層輸出一行。 代碼 (Java) import java.util.ArrayList; import java.util.LinkedList; im

原创 劍指offer | 字符流中第一個不重複的字符

字符流中第一個不重複的字符 描述 請實現一個函數用來找出字符流中第一個只出現一次的字符。例如,當從字符流中只讀出前兩個字符"go"時,第一個只出現一次的字符是"g"。當從該字符流中讀出前六個字符“google"時,第一個只出現一次