原创 【劍指Offer】3.從頭到尾打印鏈表

題目描述 輸入一個鏈表,按鏈表值從尾到頭的順序返回一個ArrayList。 解題思路 使用兩個數組,先從正向進行遍歷,然後反向取值 代碼 # -*- coding:utf-8 -*- # class ListNode: # de

原创 【機器學習實戰】KNN近鄰算法

K-近鄰算法概述 採用不同特徵值之間的距離方法進行分類 優點:精度高、對異常值不敏感、無數據輸入假定 缺點:計算複雜度高,空間複雜度高 適用範圍:數值類型和標稱型   有一個訓練樣本集,每個樣本都有標籤,輸入新數據,將新數據和舊的進行比較

原创 【劍指Offer】5.用兩個棧來實現隊列

題目描述 用兩個棧來實現一個隊列,完成隊列的Push和Pop操作。 隊列中的元素爲int類型。   解題思路 用兩個數組來存儲 代碼 # -*- coding:utf-8 -*- class Solution: def __in

原创 【劍指Offer】6.旋轉數組的最小數字

題目描述 把一個數組最開始的若干個元素搬到數組的末尾,我們稱之爲數組的旋轉。 輸入一個非遞減排序的數組的一個旋轉,輸出旋轉數組的最小元素。 例如數組{3,4,5,1,2}爲{1,2,3,4,5}的一個旋轉,該數組的最小值爲1。 NOTE:

原创 【Leetcode】1.兩數之和

題目描述 鏈接:https://leetcode-cn.com/problems/two-sum 給定一個整數數組 nums 和一個目標值 target,請你在該數組中找出和爲目標值的那 兩個 整數,並返回他們的數組下標。 你可以假設每種

原创 【Leetcode】2.兩數相加

題目描述 鏈接:https://leetcode-cn.com/problems/add-two-numbers/ 給出兩個 非空 的鏈表用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式存儲的,並且它們的每個節點只能存儲 

原创 【劍指Offer】1.二維數組中的查找

工作一段時間後,發現數據結構和算法不像框架一樣對開發效率提高那麼明顯,但是這屬於內功層面,不像框架那麼變換那麼塊。因此,重新撿起《劍指offer》系列來鍛鍊編程的敏感性。 題目描述 鏈接:https://www.nowcoder.com/

原创 【劍指Offer】30.連續子數組的最大和

題目描述 輸入一個整型數組,數組裏有正數也有負數。數組中有一個或連續的多個正數組成一個子數組。求所有子數組的和的最大值。要求時間複雜度爲O(n) 例如輸入的數組爲{1,-2,3,10,-4,7,2,-5},和最大的子數組爲{3,10,-4

原创 【劍指Offer】27.字符串的排列

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

原创 【劍指Offer】28.數組中出現次數超過一半的數字

題目描述 數組中有一個數字出現次數超過數組長度的一半,請找出這個數字。 例如輸入一個長度爲9的數組{1,2,3,2,2,2,5,4,2}。由於數字2在數組中出現了5次,超過數組長度的一半,因此輸出2 解題思路 第一個想法是排序,時間複雜度

原创 【劍指Offer】29.最小的k個數

題目描述 輸入n個整數,找出其中最小的K個數。例如輸入4,5,1,6,2,7,3,8這8個數字,則最小的4個數字是1,2,3,4,。 解題思路 最簡單的思路:把輸入的n個正數排序,排序之後位於最前面的k個數就是最小的k個數。O(nlogn

原创 【劍指Offer】24.二叉樹中和爲某一值的路徑

題目描述 輸入一顆二叉樹的根節點和一個整數,打印出二叉樹中結點值的和爲輸入整數的所有路徑。路徑定義爲從樹的根結點開始往下一直到葉結點所經過的結點形成一條路徑。 解題思路 先訪問根節點,前序遍歷。 規律:用前序遍歷的方式訪問到某一結點,把該

原创 【劍指Offer】9.變態跳臺階

題目描述 一隻青蛙一次可以跳上1級臺階,也可以跳上2級……它也可以跳上n級。求該青蛙跳上一個n級的臺階總共有多少種跳法。 解題思路 假設f(n)是n個臺階跳的次數。 f(1) = 1 f(2) 會有兩個跳得方式,一次1階或者2階,這回歸到

原创 【劍指Offer】12.數值的整數次方

題目描述 給定一個double類型的浮點數base和int類型的整數exponent。求base的exponent次方。 解題思路 這道題考察的看起來很簡單的題目,但是需要考慮異常的情況,例如exponent爲負數或者base爲0 代碼

原创 【劍指Offer】26.二叉搜索樹與雙向鏈表

題目描述 輸入一棵二叉搜索樹,將該二叉搜索樹轉換成一個排序的雙向鏈表。要求不能創建任何新的結點,只能調整樹中結點指針的指向。 解題思路 在二叉樹中,每個結點都有兩個指向子結點的指針,在雙向鏈表中,每個結點也有兩個指針,分別指向前一個結點和