原创 劍指offer 棧的壓入彈出序列

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

原创 ubuntu16.04安裝僞分佈式Hadoop2.9.1

1.前言 最近需要搭建一個推薦系統,由於只有一臺服務器,Hadoop使用僞分佈式。 2.安裝僞分佈式Hadoop 2.1.添加Hadoop用戶 sudo useradd -m hadoop -s /bin/bash 爲hadoop

原创 劍指offer 禮物的最大價值

題目 題目描述 在一個 m*n 的棋盤的每一個格都放有一個禮物,每個禮物都有一定價值(大於 0)。從左上角開始拿禮物,每次向右或向下移動一格,直到右下角結束。給定一個棋盤,求拿到禮物的最大價值。例如,對於如下棋盤 1 10

原创 劍指offer 字符串的排列

題目 輸入一個字符串,按字典序打印出該字符串中字符的所有排列。例如輸入字符串abc,則打印出由字符a,b,c所能排列出來的所有字符串abc,acb,bac,bca,cab和cba。 輸入描述: 輸入一個字符串,長度不超過9(可

原创 劍指offer 最小的k個數

題目 輸入n個整數,找出其中最小的K個數。例如輸入4,5,1,6,2,7,3,8這8個數字,則最小的4個數字是1,2,3,4,。 思路 partition 代碼 # -*- coding:utf-8 -*- class Solut

原创 劍指offer 序列化二叉樹

題目 請實現兩個函數,分別用來序列化和反序列化二叉樹 思路 前序遍歷序列化和反序列化,遞歸即可 代碼 # -*- coding:utf-8 -*- # class TreeNode: # def __init__(self

原创 劍指offer 第一個只出現一次的字符

題目 在一個字符串(1<=字符串長度<=10000,全部由字母組成)中找到第一個只出現一次的字符,並返回它的位置 思路 用字典記錄所有字符出現次數。 代碼 # -*- coding:utf-8 -*- class Solution

原创 劍指offer 數組中出現次數超過一半的數字

題目 數組中有一個數字出現的次數超過數組長度的一半,請找出這個數字。例如輸入一個長度爲9的數組{1,2,3,2,2,2,5,4,2}。由於數字2在數組中出現了5次,超過數組長度的一半,因此輸出2。如果不存在則輸出0。 思路 用一個

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

題目 輸入一個正整數數組,把數組裏所有數字拼接起來排成一個數,打印能拼接出的所有數字中最小的一個。例如輸入數組{3,32,321},則打印出這三個數字能排成的最小數字爲321323。 思路 排序算法,如果num1+num2<num

原创 劍指offer 二叉搜索樹與雙向鏈表

題目 輸入一棵二叉搜索樹,將該二叉搜索樹轉換成一個排序的雙向鏈表。要求不能創建任何新的結點,只能調整樹中結點指針的指向。 思路 遞歸 代碼 # -*- coding:utf-8 -*- # class TreeNode: #

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

題目 輸入一個整數數組,判斷該數組是不是某二叉搜索樹的後序遍歷的結果。如果是則輸出Yes,否則輸出No。假設輸入的數組的任意兩個數字都互不相同。 思路 後序遍歷序列的根節點爲最後一個值。 搜索樹的左子樹小於根節點,右子樹大於根節

原创 LeetCode 91. Decode Ways

題目 思路 DP 代碼 class Solution: def numDecodings(self, s): """ :type s: str :rtype: int

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

題目 定義棧的數據結構,請在該類型中實現一個能夠得到棧最小元素的min函數。 思路 同時用一個最小棧記錄當前最小值。 代碼 # -*- coding:utf-8 -*- class Solution: def __init

原创 劍指offer 從上往下打印二叉樹

題目 從上往下打印出二叉樹的每個節點,同層節點從左至右打印。 思路 層次遍歷 代碼 # -*- coding:utf-8 -*- # class TreeNode: # def __init__(self, x): #

原创 劍指offer 醜數

題目 把只包含因子2、3和5的數稱作醜數(Ugly Number)。例如6、8都是醜數,但14不是,因爲它包含因子7。 習慣上我們把1當做是第一個醜數。求按從小到大的順序的第N個醜數。 思路 用一個數組記錄當前找到的最小丑數。 代