原创 JZ64 滑動窗口的最大值

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

原创 JZ61 序列化二叉樹

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

原创 JZ63 數據流中的中位數

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

原创 JZ60 把二叉樹打印成多行

把二叉樹打印成多行 從上到下按層打印二叉樹,同一層結點從左至右輸出。每一層輸出一行。   func Print(root *TreeNode) [][]int { if root == nil { return [

原创 JZ65 矩陣中的路徑

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

原创 JZ69 把數字翻譯爲字符串

把數字翻譯爲字符串 題目:給定一個數字,按照如下規則翻譯成字符串:0翻譯成“a”,1翻譯成“b”…25翻譯成“z”。一個數字有多種翻譯可能,例如12258一共有5種,分別是bccfi,bwfi,bczi,mcfi,mzi。實現一個函數,用來

原创 JZ66 機器人的運動範圍

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

原创 JZ67 剪繩子

剪繩子 題目:給你一根長度爲n的繩子,請把繩子剪成整數長的m段(m、n都是整數,n>1並且m>1,m<=n),每段繩子的長度記爲k[1],...,k[m]。請問k[1]x...xk[m]可能的最大乘積是多少?例如,當繩子的長度是8時,我們把

原创 Z62 二叉搜索樹的第k個結點

二叉搜索樹的第k個結點 題目:給定一棵二叉搜索樹,請找出其中的第k小的TreeNode結點。 思路: 二叉搜索樹的中序遍歷是遞增的序列,使用循環的中序遍歷找到第k個節點就行了。 func KthNode(pRoot *TreeNode,

原创 劍指 Offer 68 數字序列中某一位的數字

數字序列中某一位的數字 數字以0123456789101112131415…的格式序列化到一個字符序列中。在這個序列中,第5位(從下標0開始計數)是5,第13位是1,第19位是4,等等。 請寫一個函數,求任意第n位對應的數字。 思路:以第1

原创 JZ28 數組中出現次數超過一半的數字

數組中出現次數超過一半的數字 數組中有一個數字出現的次數超過數組長度的一半,請找出這個數字。 你可以假設數組是非空的,並且給定的數組總是存在多數元素。   本題常見的三種解法: 哈希表統計法: 遍歷數組 nums ,用 HashMap 統計

原创 JZ31 整數中1出現的次數(從1到n整數中1出現的次數)

整數中1出現的次數(從1到n整數中1出現的次數) 輸入一個整數 n ,求1~n這n個整數的十進制表示中1出現的次數例如,1~13中包含1的數字有1、10、11、12、13因此共出現6次 思路: 設N = abcde ,其中abcde分別爲十

原创 JZ30 連續子數組的最大和

連續子數組的最大和 輸入一個整型數組,數組裏有正數也有負數。數組中的一個或連續多個整數組成一個子數組。求所有子數組的和的最大值。要求時間複雜度爲 O(n). 思路: 動態規劃解析:狀態定義: 設動態規劃列表 dpdp ,dp[i]dp[i]

原创 JZ34 第一個只出現一次的字符位置

第一個只出現一次的字符位置 題目:在一個字符串(1<=字符串長度<=10000,全部由字母組成)中找到第一個只出現一次的字符,並返回它的位置 思路:使用一個hashmap遍歷一遍,統計每個字符出現的次數,然後再統計一遍,找到第一個出現一次的

原创 JZ33 醜數

 醜數 把只包含質因子2、3和5的數稱作醜數(Ugly Number)。例如6、8都是醜數,但14不是,因爲它包含質因子7。 習慣上我們把1當做是第一個醜數。求按從小到大的順序的第N個醜數。 方法1:最小堆,基於sort.IntSlice實