原创 leetcode之刪除排序鏈表中的重複元素 II

給定一個排序鏈表,刪除所有含有重複數字的節點,只保留原始鏈表中 沒有重複出現 的數字。 簡要題解: 設置雙指針遍歷一整個鏈表遇到重複的就把當前節點接到下一個節點。當前節點位置不變以防下一段還遇到重複的。主要代碼如下: /** *

原创 leetcode之LRU緩存

設計和構建一個“最近最少使用”緩存,該緩存會刪除最近最少使用的項目。緩存應該從鍵映射到值(允許你插入和檢索特定鍵對應的值),並在初始化時指定最大容量。當緩存被填滿時,它應該刪除最近最少使用的項目。 它應該支持以下操作: 獲取數據

原创 leetcode之平衡二叉樹

輸入一棵二叉樹的根節點,判斷該樹是不是平衡二叉樹。如果某二叉樹中任意節點的左右子樹的深度相差不超過1,那麼它就是一棵平衡二叉樹 簡要題解 dfs遍歷左右子樹的深度判斷一下即可主要代碼如下: /** * Definition fo

原创 leetcode之分隔鏈表

給定一個頭結點爲 root 的鏈表, 編寫一個函數以將鏈表分隔爲 k 個連續的部分。 每部分的長度應該儘可能的相等: 任意兩部分的長度差距不能超過 1,也就是說可能有些部分爲 null。 這k個部分應該按照在鏈表中出現的順序進行輸

原创 leetcode之矩陣中的路徑

矩陣中的路徑 請設計一個函數,用來判斷在一個矩陣中是否存在一條包含某字符串所有字符的路徑。路徑可以從矩陣中的任意一格開始,每一步可以在矩陣中向左、右、上、下移動一格。如果一條路徑經過了矩陣的某一格,那麼該路徑不能再次進入該格子。例

原创 算法訓練之KMP算法

kmp算法是個字符串的基礎算法,主要利用先通過模式串自匹配然後在於文本串比較 時間複雜度爲O(n+m)即文本串加模式串的長度。 對於next數組正常要寫左Next由於next在c++中的關鍵字若使用則會報錯 next數組的求法主要

原创 網絡原理之應用層

DNS 是一個分佈式數據庫,提供了主機名和 IP 地址之間相互轉換的服務。這裏的分佈式數據庫是指,每個站點只保留它自己的那部分數據。 域名具有層次結構,從上到下依次爲:根域名、頂級域名、二級域名。 DNS 可以使用 UDP 或者

原创 leetcode盛最多水發容器

給你 n 個非負整數 a1,a2,…,an,每個數代表座標中的一個點 (i, ai) 。在座標內畫 n 條垂直線,垂直線 i 的兩個端點分別爲 (i, ai) 和 (i, 0)。找出其中的兩條線,使得它們與 x 軸共同構成的容器可

原创 網絡原理 網絡層

網絡層 設計思想: 網絡層向上只提供簡單靈活的,無連接的,盡最大努力交付的數據報服務。 同時網絡層不提供服務質量的保證即所傳送的分組可能出錯 丟失 重複是失序到達不了終點 。同時也不限制分組交付的時限制。 網際協議IP 1.地址解

原创 Leetcode之刪除鏈表

利用快慢指針來解決此問題 ,具體代碼如下. /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNod

原创 leetcode之二叉樹齒形層序遍歷

給定一個二叉樹,返回其節點值的鋸齒形層次遍歷。(即先從左往右,再從右往左進行下一層遍歷,以此類推,層與層之間交替進行)。 簡要題解: 該題和層序遍歷一樣利用隊列來解決不過由於要蛇形遍歷因此我們就加了一個變量控制其轉向主要代碼如下:

原创 leetcode之鏈表求和

給定兩個用鏈表表示的整數,每個節點包含一個數位。 這些數位是反向存放的,也就是個位排在鏈表首部。 編寫函數對這兩個整數求和,並用鏈表形式返回結果。 簡要題解直接相加即可; 代碼如下 /** * Definition for si

原创 leetocde之二叉樹層序遍歷II

給定一個二叉樹,返回其節點值自底向上的層次遍歷。 (即按從葉子節點所在層到根節點所在的層,逐層從左向右遍歷) 解法更二叉樹層序遍歷一樣,直接使用隊列來解決,把數據存入vector最後翻轉一下即可。主要代碼如下: /** * De

原创 算法訓練之最短路

floyed 多源最短路 通過枚舉中轉點來更新點到點直接的最短路距離 時間複雜度爲n3 通常用來解解決點比較少的最短路問題 實際上這是個動態規劃的簡單應用。 for(int k=1;k<=n;i++) for(int

原创 icpc/ccpc退役貼

留坑待更