原创 劍指offer:棧的壓入、彈出序列(Python)

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

原创 劍指offer:順時針打印矩陣(Python)

題目描述 輸入一個矩陣,按照從外向裏以順時針的順序依次打印出每一個數字,例如,如果輸入如下矩陣: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 則依次打印出數字1,2,3,4,8,12,16,15,

原创 劍指offer:連續子數組的最大和(Python)

題目描述 HZ偶爾會拿些專業問題來忽悠那些非計算機專業的同學。今天測試組開完會後,他又發話了:在古老的一維模式識別中,常常需要計算連續子向量的最大和,當向量全爲正數的時候,問題很好解決。但是,如果向量中包含負數,是否應該包含某個負

原创 劍指offer:第一個只出現一次的字符(Python)

題目描述 在一個字符串(1<=字符串長度<=10000,全部由字母組成)中找到第一個只出現一次的字符,並返回它的位置。 解題思路 利用Python中的字典。字典的鍵(Key)一定唯一,每個鍵對應的值(Value)對應該鍵Key出現

原创 劍指offer:包含min函數的棧(Python)

題目描述 定義棧的數據結構,請在該類型中實現一個能夠得到棧最小元素的min函數。 # -*- coding:utf-8 -*- class Solution: def push(self, node): #

原创 劍指offer:最小的K個數(Python)

題目描述 輸入n個整數,找出其中最小的K個數。例如輸入4,5,1,6,2,7,3,8這8個數字,則最小的4個數字是1,2,3,4,。 解題思路 不用動腦的解題思路:實現一個排序算法,然後返回前k個數字。這種思路很low,但是考慮到

原创 劍指offer:字符串的排列(Python)

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

原创 劍指offer:和爲S的連續正數序列(Python)

題目描述 小明很喜歡數學,有一天他在做數學作業時,要求計算出9~16的和,他馬上就寫出了正確答案是100。但是他並不滿足於此,他在想究竟有多少種連續的正數序列的和爲100(至少包括兩個數)。沒多久,他就得到另一組連續正數和爲100

原创 劍指offer:兩個鏈表的第一個公共結點 (Python)

題目描述 輸入兩個鏈表,找出它們的第一個公共結點。 解題思路 看到這道題之後,第一反應是用利用兩個鏈表的長度差來做。如果兩個鏈表有公共節點,那兩個鏈表共用公共節點之後的部分。計算兩個鏈表的長度差diff,讓較長的鏈表前進diff後

原创 劍指offer:複雜鏈表的複製(Python)

題目描述 輸入一個複雜鏈表(每個節點中有節點值,以及兩個指針,一個指向下一個節點,另一個特殊指針指向任意一個節點),返回結果爲複製後複雜鏈表的head。(注意,輸出結果中請不要返回參數中的節點引用,否則判題程序會直接返回空) cl

原创 劍指offer:把數組排成最小的數(Python)

題目描述 輸入一個正整數數組,把數組裏所有數字拼接起來排成一個數,打印能拼接出的所有數字中最小的一個。例如輸入數組{3,32,321},則打印出這三個數字能排成的最小數字爲321323。 解題思路 用自定義規則的快速排序算法解決。

原创 劍指offer:醜數(Python)

題目描述 把只包含因子2、3和5的數稱作醜數(Ugly Number)。例如6、8都是醜數,但14不是,因爲它包含因子7。 習慣上我們把1當做是第一個醜數。求按從小到大的順序的第N個醜數。 解題思路 如果p是醜數,那麼p=2^x

原创 劍指offer:數組中只出現一次的數字(Python)

題目描述 一個整型數組裏除了兩個數字之外,其他的數字都出現了兩次。請寫程序找出這兩個只出現一次的數字。 解題思路 思路1: 用Python中的字典(鍵–值對)。以數組中的數字爲鍵,以其出現的次數爲值。最後找到值爲1對應的鍵。時間

原创 劍指offer:和爲S的兩個數字(Python)

題目描述 輸入一個遞增排序的數組和一個數字S,在數組中查找兩個數,是的他們的和正好是S,如果有多對數字的和等於S,輸出兩個數的乘積最小的。 輸出描述: 對應每個測試案例,輸出兩個數,小的先輸出。 解題思路 數列滿足遞增,設兩個

原创 劍指offer:數字在排序數組中出現的次數(Python)

題目描述 統計一個數字在排序數組中出現的次數。 解題思路 二分查找到給定的數字及其座標。以該座標爲中點,向前向後找到這個數字的 始 – 終 位置。 第一版代碼: def GetNumberOfK(self, data, k):