原创 [鏈表]leetcode328:奇偶鏈表(medium)

題目: 題解: 思路:很簡單,原地算法,直接遍歷改變奇偶節點之間的鏈接就好了。 1)每次循環,將奇數節點鏈接到偶數節點的next節點,同時更新偶數節點;偶數節點鏈接奇數節點的next節點,同時更新偶數節點。 2)在偶數節點爲

原创 [dp]leetcode674:最長連續遞增子序列(easy)

題目: 題解: 題解1:動態規劃,dp[i]表示位置i的連續遞增子序列長度,初始化爲1,因爲每個數字是最小的遞增子序列。狀態轉移方程:若nums[i-1]<nums[i],則dp[i]=dp[i-1]+1;否則dp[i]=1

原创 [拓撲排序]leetcode210:課程表 Ⅱ (medium)

題目: 題解: 拓撲排序,與207. 課程表代碼一樣的,只是將拓撲排序的頂點保留而已,注意邊的數組給的是反向,這樣的話,我們要將res反轉就行了。 算法步驟: 1)遍歷邊的數組prerequisites建立圖的鄰接表 2)使

原创 [拓撲排序]leetcode207:課程表(medium)

題目: 題解: 拓撲排序裸題 算法步驟: 1)遍歷邊的數組prerequisites建立圖的鄰接表 2)使用隊列來存放入度爲0的頂點,從而避免重複檢測入度爲0的頂點 3)刪除入度爲0的點,以及刪除該點爲起點的邊,並統計刪除入

原创 [回溯法]面試題 08.09. 括號(medium)

題目: 題解: 回溯法經典題型 題目中的 n 表示括號的個數,那麼我們用 n 來表示左括號的個數'(',那麼每使用一個左括號,同時產生一個可使用的右括號數')',可以保證不會產生無效括號。 可行解的生成:可使用的左右括號數都

原创 [dp][區間貪心]leetcode646:最長數對鏈(medium)

題目: 題解: C++:動態規劃 || 二分法 || 貪心法(一題多解,由子題想到母題) 代碼如下: class Solution { public: //題解1:動態規劃,時間複雜度O(n^2),空間複雜度O(

原创 [2020/02/05]重拾git學習

前言: 今日打算重新學習下git的使用方法及常用命令,記錄如下。經過半天的學習,終於把git官文檔第二章又重新過了一遍了,完結撒花~ 文章目錄0、git的三種狀態1、獲取git倉庫:2、記錄每次更新到倉庫:3、git之查看提交歷

原创 [回溯]leetcode491:遞增子序列(medium)

題目: 題解: 回溯法一般套路,生成組合問題,這裏注重講一下index吧。 由於是生成組合並不是生成排序,所以進行下一次決策的話,我們需要將i+1,表示i表示的數字已經加入決策路徑了,只有回溯回來的時候i+1會還原成i,然後

原创 [二分法]leetcode981:基於時間的鍵值存放(mudium)

題目: 981. 基於時間的鍵值存儲 題解: 二分法:尋找小於等於x的最大值,可以轉換爲尋找大於x的最小值,這樣大於x的最小值的前一個就是小於等於x的最大值了。 思路:將<key,val,time>存在放一個unorder

原创 [貪心法]leetcode1326:灌溉花園的最少水龍頭數目(hard)

題目: 5318. 灌溉花園的最少水龍頭數目 題解: 貪心法 1:首先遍歷rangs,建立45. 跳躍遊戲 Ⅱ中的跳躍數組,left表示起始點,right-left表示最大跳躍距離 2:使用跳躍遊戲Ⅱ中的代碼即可,不過每次

原创 [數論]leetcode628:三個數的最大乘積(easy)

題目: 題解: 分情況,找規律 首先對數組進行排序,然後找到規律返回即可。 1)若數組內的數字全爲負數,那麼最後結果肯定爲負數。而最大值就是最後面兩個負數相乘獲得絕對值的最大值,然後再乘以一個絕對值較小的負數即可,那就是最前

原创 [最短路徑]leetcode1334:閾值距離內鄰居最少的城市(medium)

題目: 1334. 閾值距離內鄰居最少的城市 題解: 最短路徑模板題:Bellman-Ford算法、Dijkstra算法、SPFA算法、Floyd-Warshall算法。 代碼如下: class Solution { pu

原创 [貪心法+回溯法]leetcode322:零錢兌換(medium)

題目: 題解: 貪心+回溯 貪心:將零錢由大到小排序,便於首先選擇面值較大的零錢。 回溯:若某個零錢選擇之後,它後面的小零錢不能完成兌換的話,我們需要回溯,也就是將面值較大的零錢減少一張。 加速 or 剪枝:每次直接將面值大

原创 [大根堆]面試題40. 最小的k個數(easy)

題目: 題解: 大根堆模板題,維持一個大小爲 k 的大根堆就可得到數組前 k 個最小數了。 代碼如下: class Solution { public: vector<int> getLeastNumbers(v

原创 [二叉樹]面試題 04.08. 首個共同祖先(medium)

題目: 題解: 遞歸三部曲,寫好遞歸出口,遞歸式和處理遞歸結果便可得解。 首個公共祖先有三種情況: 1)p、q爲以 root 爲根節點的左右子樹中,則 root 爲祖先 2)p、q在以 root 爲節點的左子樹中,則 roo