原创 9.買賣股票的最佳時機 II

題目描述: 給定一個數組,它的第 i 個元素是一支給定股票第 i 天的價格。 設計一個算法來計算你所能獲取的最大利潤。你可以儘可能地完成更多的交易(多次買賣一支股票)。 注意:你不能同時參與多筆交易(你必須在再次購買前出售掉之前的

原创 7.JS實現網頁端猜數字小遊戲

題目描述 電腦產生一個0到100之間的隨機數字,並且要求用戶來猜,如果用戶猜的數字比這個數字大,電腦會提示“太大”,否則會提示“太小”,當用戶正好猜中,電腦會提示“恭喜你猜對了,這個數是…”。在用戶每次猜測之後,程序會輸出用戶第幾

原创 8.三數之和

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

原创 12.合併兩個有序鏈表

題目描述: 將兩個有序鏈表合併爲一個新的有序鏈表並返回。新鏈表是通過拼接給定的兩個鏈表的所有節點組成的。 示例: 輸入:1->2->4, 1->3->4 輸出:1->1->2->3->4->4 代碼實現: JavaScript

原创 11.買賣股票的最佳時機Ⅲ

題目描述: 給定一個數組,它的第 i 個元素是一支給定的股票在第 i 天的價格。 設計一個算法來計算你所能獲取的最大利潤。你最多可以完成 兩筆 交易。 注意: 你不能同時參與多筆交易(你必須在再次購買前出售掉之前的股票)。 示例

原创 17.合併K個排序鏈表

題目描述: 合併 k 個排序鏈表,返回合併後的排序鏈表。請分析和描述算法的複雜度。 示例: 輸入: [ 1->4->5, 1->3->4, 2->6 ] 輸出: 1->1->2->3->4->4->5->6 代碼實現

原创 13.刪除排序鏈表中的重複元素

題目描述: 給定一個排序鏈表,刪除所有重複的元素,使得每個元素只出現一次。 示例 1: 輸入: 1->1->2 輸出: 1->2 示例 2: 輸入: 1->1->2->3->3 輸出: 1->2->3 代碼實現: JavaSc

原创 26.逆波蘭表達式求值

題目描述: 代碼實現: 關鍵在於理解題意,運用棧存儲數字,遍歷到運算符,則取棧頂兩個元素運算即可。 時間複雜度:O(n) /** * @param {string[]} tokens * @return {number}

原创 15.兩數相加

題目描述: 給出兩個 非空 的鏈表用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式存儲的,並且它們的每個節點只能存儲 一位 數字。 如果,我們將這兩個數相加起來,則會返回一個新的鏈表來表示它們的和。 您可以假設除了

原创 14.環形鏈表

題目描述: 給定一個鏈表,判斷鏈表中是否有環。 爲了表示給定鏈表中的環,我們使用整數 pos 來表示鏈表尾連接到鏈表中的位置(索引從 0 開始)。 如果 pos 是 -1,則在該鏈表中沒有環。 示例 1: 輸入:head = [3

原创 27.二叉樹的最大深度

題目描述: 代碼實現: 遞歸法,分別檢索左右節點,逐步遞歸即可。 時間複雜度:O(n) /** * Definition for a binary tree node. * function TreeNode(val)

原创 23.最小棧

題目描述: 設計一個支持 push,pop,top 操作,並能在常數時間內檢索到最小元素的棧。 push(x) – 將元素 x 推入棧中。 pop() – 刪除棧頂的元素。 top() – 獲取棧頂元素。 getMin() – 檢

原创 24.相同的樹

題目描述: 代碼實現: 遞歸法,三個判斷語句後遞歸到左右節點即可。 時間複雜度:O(n) /** * Definition for a binary tree node. * function TreeNode(val)

原创 34.滑動窗口最大值

題目描述: 代碼實現: 暴力法,每次滑動窗口計算最大值。 /** * @param {number[]} nums * @param {number} k * @return {number[]} */ var ma

原创 37.加油站

題目描述: 代碼實現: 貪心算法,設置一個sum來計算gas是否大於等於cost,再設置一個curSum來判斷從哪裏爲起始點,並設置爲startIndex,最終得出結果。 時間複雜度:O(n) /** * @param {