原创 【劍指offer】53.表示數值的字符串

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

原创 【劍指offer】67.剪繩子

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

原创 【劍指offer】49.把字符串轉換成整數

問題描述 將一個字符串轉換成一個整數,要求不能使用字符串轉換整數的庫函數。 數值爲0或者字符串不是一個合法的數值則返回0 輸入描述 輸入一個字符串,包括數字字母符號,可以爲空 輸出描述 如果是合法的數值表達則返回該數字,否則返回0

原创 【劍指offer】50.數組中重複的數字

問題描述 在一個長度爲n的數組裏的所有數字都在0到n-1的範圍內。 數組中某些數字是重複的,但不知道有幾個數字是重複的。也不知道每個數字重複幾次。請找出數組中任意一個重複的數字。 例如,如果輸入長度爲7的數組{2,3,1,0,2,

原创 【劍指offer】35.數組中的逆序對

問題描述 在數組中的兩個數字,如果前面一個數字大於後面的數字,則這兩個數字組成一個逆序對。輸入一個數組,求出這個數組中的逆序對的總數P。並將P對1000000007取模的結果輸出。 即輸出P%1000000007 輸入描述 題目保

原创 【劍指offer】32. 把數組排成最小的數

問題描述 輸入一個正整數數組,把數組裏所有數字拼接起來排成一個數,打印能拼接出的所有數字中最小的一個。例如輸入數組{3,32,321},則打印出這三個數字能排成的最小數字爲321323。 思路 看到這個返回值是個str,我就明白了

原创 【劍指offer】36. 兩個鏈表的第一個公共結點

問題描述 輸入兩個鏈表,找出它們的第一個公共結點。(注意因爲傳入數據是鏈表,所以錯誤測試數據的提示是用其他方式顯示的,保證傳入數據是正確的) 思路 用set來做。(方法一) 兩個鏈表如果有交點,肯定是從那個點以後就合併成一個鏈表了

原创 【劍指offer】33. 醜數

問題描述 把只包含質因子2、3和5的數稱作醜數(Ugly Number)。例如6、8都是醜數,但14不是,因爲它包含質因子7。 習慣上我們把1當做是第一個醜數。求按從小到大的順序的第N個醜數。 思路 沒啥思路。因爲沒搞太明白啥是醜

原创 【劍指offer】38. 二叉樹的深度

問題描述 輸入一棵二叉樹,求該樹的深度。從根結點到葉結點依次經過的結點(含根、葉結點)形成樹的一條路徑,最長路徑的長度爲樹的深度。 思路 遞歸着來搞就行了,比較弱智。 方法一 class Solution { public

原创 【劍指offer】44. 翻轉單詞順序列

問題描述 牛客最近來了一個新員工Fish,每天早晨總是會拿着一本英文雜誌,寫些句子在本子上。同事Cat對Fish寫的內容頗感興趣,有一天他向Fish借來翻看,但卻讀不懂它的意思。例如,“student. a am I”。後來才意識

原创 【劍指offer】40. 數組中只出現一次的數字

題目描述 一個整型數組裏除了兩個數字之外,其他的數字都出現了兩次。請寫程序找出這兩個只出現一次的數字。 思路 異或異或,顧名思義就是說相異爲1,我們可以利用這點,把2個落單的數字按照他們不同的特徵來分組。(這個特徵當然就是不同的二

原创 【劍指offer】37.數字在排序數組中出現的次數

問題描述 統計一個數字在排序數組中出現的次數。 思路 暴力肯定沒offer,雖然暴力只需要O(n)。 這題能做出來O(nlogn)纔有offer. 有序數組,還想不到二分撞死算了。二分的變種應用。用二分來求邊界。 方法一 clas

原创 【劍指offer】39.平衡二叉樹

問題描述 輸入一棵二叉樹,判斷該二叉樹是否是平衡二叉樹。 在這裏,我們只需要考慮其平衡性,不需要考慮其是不是排序二叉樹 思路 只看平衡性,那就對於每個結點都看看左子樹和右子樹的高度是不是相差小於等於1即可。 如果看平衡性,也看排序

原创 【劍指offer】41. 和爲S的連續正數序列

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

原创 【劍指offer】42.和爲S的兩個數字

問題描述 輸入一個遞增排序的數組和一個數字S,在數組中查找兩個數,使得他們的和正好是S,如果有多對數字的和等於S,輸出兩個數的乘積最小的。 輸出描述 對應每個測試案例,輸出兩個數,小的先輸出。 思路 用leetcode兩數之和的邏