原创 買賣股票的最佳時機I,II,III

121.給定一個數組,它的第 i 個元素是一支給定股票第 i 天的價格。如果你最多隻允許完成一筆交易(即買入和賣出一支股票一次),設計一個算法來計算你所能獲取的最大利潤。 兩種方法: 1.暴力法 2.一次遍歷 先求最小值 當前

原创 面試題 08.09. 括號

括號。設計一種算法,打印n對括號的所有合法的(例如,開閉一一對應)組合。 說明:解集不能包含重複的子集。 例如,給出 n = 2,生成結果爲: [ “(())”, “()()” ] 算法步驟: 前提:p,q分別代表左括號,右括號數

原创 257. 二叉樹的所有路徑

給定一個二叉樹,返回所有從根節點到葉子節點的路徑。 說明: 葉子節點是指沒有子節點的節點。 示例: 輸入: 1 / \ 2 3 \ 5 輸出: ["1->2->5", "1->3"] 解釋: 所有根節點

原创 打家劫舍

198.本題即在給定的數組arr中,求出arr中不相鄰節點之和最大值。 與之前寫的動態規劃那題一樣。我試着用遞歸和非遞歸的方法去寫。遞歸的方法,時間複雜度超了,非遞歸的通過。 代碼: class Solution: def

原创 445. 兩數相加 II

給定兩個非空鏈表來代表兩個非負整數。數字最高位位於鏈表開始位置。它們的每個節點只存儲單個數字。將這兩數相加會返回一個新的鏈表。 你可以假設除了數字 0 之外,這兩個數字都不會以零開頭。 進階: 如果輸入鏈表不能修改該如何處理?換句

原创 1290. 二進制鏈表轉整數

給你一個單鏈表的引用結點 head。鏈表中每個結點的值不是 0 就是 1。已知此鏈表是一個整數數字的二進制表示形式。 請你返回該鏈表所表示數字的 十進制值 。 1->0->1 輸入:head = [1,0,1] 輸出:5 解釋:二

原创 面試題 08.05. 遞歸乘法

遞歸實現乘法。 class Solution: def multiply(self, A: int, B: int) -> int: #for i in range(B): sum = 0

原创 面試題10- II. 青蛙跳臺階問題

一隻青蛙一次可以跳上1級臺階,也可以跳上2級臺階。求該青蛙跳上一個 n 級的臺階總共有多少種跳法。 答案需要取模 1e9+7(1000000007),如計算初始結果爲:1000000008,請返回 1。 思路: 青蛙第一次跳的時候

原创 98. 驗證二叉搜索樹

給定一個二叉樹,判斷其是否是一個有效的***二叉搜索樹***。 假設一個二叉搜索樹具有如下特徵: 節點的左子樹只包含小於當前節點的數。 節點的右子樹只包含大於當前節點的數。 所有左子樹和右子樹自身必須也是二叉搜索樹。 示例 1:

原创 面試題54. 二叉搜索樹的第k大節點

給定一棵二叉搜索樹,請找出其中第k大的節點。 示例 : 輸入: root = [5,3,6,2,4,null,null,1], k = 3 5 / \ 3 6 / \ 2

原创 面試題36. 二叉搜索樹與雙向鏈表

輸入一棵二叉搜索樹,將該二叉搜索樹轉換成一個排序的循環雙向鏈表。要求不能創建任何新的節點,只能調整樹中節點指針的指向。 思路:中序遍歷,其它技巧未掌握,後面多看幾遍,看看有什麼收穫。 本題帶入三個節點的二叉樹:

原创 面試題35. 複雜鏈表的複製

請實現 copyRandomList 函數,複製一個複雜鏈表。在複雜鏈表中,每個節點除了有一個 next 指針指向下一個節點,還有一個 random 指針指向鏈表中的任意節點或者 null。 輸入:head = [[7,null]

原创 148. 排序鏈表

在 O(n log n) 時間複雜度和常數級空間複雜度下,對鏈表進行排序。 示例 1: 輸入: 4->2->1->3 輸出: 1->2->3->4 基於遞歸的歸併排序方法 思路:1.爲什麼要用遞歸?2.遞歸的出口是什麼? 答:1.

原创 迴歸樹算法思想

1.算出每個屬性的residuals 1.1針對單個屬性的算出threshold 1.2 每個threshold對應一個residuals 選擇residuals最小值對應的threshold作爲劃分點 1.3 算出每個屬性的

原创 15. 3Sum

給定一個包含 n 個整數的數組 nums,判斷 nums 中是否存在三個元素 a,b,c ,使得 a + b + c = 0 ?找出所有滿足條件且不重複的三元組。 注意:答案中不可以包含重複的三元組。 例如, 給定數組 nums