排序演算法複雜度
層序遍歷 + 雙端佇列:
演算法流程:
特例處理: 當樹的根節點為空,則直接返回空列表 ;
初始化: 列印結果空列表 res ,包含根節點的雙端佇列 queue;
bfs 迴圈: 當 queue 為空時跳出;
新建列表 temp ,用於臨時儲存當前層列印結果;
當前層列印迴圈: 迴圈次數為當前層節點數(即 queue長度);
出隊: 隊首元素出隊,記為 node;
列印: 若為奇數層,將 node.val 新增至 temp 尾部;否則,新增至 temp 頭部;
新增子節點: 若 node 的左(右)子節點不為空,則加入 queue;
將當前層結果 temp 轉化為 list 並新增入 res ;
返回值: 返回列印結果列表 res 即可;
class
solution
else
if(node.left != null) queue.
add(node.left);if
(node.right != null) queue.
add(node.right);}
res.
add(temp);}
return res;
}}
string.substring(beginindex,endindex):從beginindex開始取,到endindex結束,其中不包括endindex位置的字元
演算法流程:
初始化: 票數統計 votes = 0 , 眾數 x;
迴圈: 遍歷陣列 nums 中的每個數字 num ; 當 票數 votes 等於 0 ,則假設當前數字 num 是眾 數; 當 num = x 時,票數 votes 自增 1 ;當 num != x 時,票數 votes 自減 1 ;
返回值: 返回 x 即可;
// 摩爾投票法
int votes =0;
int x =0;
for(
int num:nums)
return x;
模板:
public
int[
]findcontinuoussequence
(int target)
res.
add(temp);}
if(sum < target)
else
}return res.
toarray
(new
int[0]);}
設有二進位制數n,求n中1的個數:思路1:核心思路:n & (n - 1) 會把n中的最後乙個1變成0
迴圈中每次去除n的最後乙個1,res記錄迴圈次數,就是1的個數
public
class
solution
return res;
}}
思路2:
引入偽頭節點:由於初始狀態合併鍊錶中無節點,因此迴圈第一輪時無法將節點新增到合併鍊錶中。
解決方案:初始化乙個輔助節點dum作為合併鍊錶的偽頭節點,將各節點新增至dum之後。
class
solution
else
cur = cur.next;
}//跳出時有兩種情況,即 l1為空或 l2為空。
}}
新增鏈結描述 Manacher s演算法學習記錄
在leetcode上刷題時遇到了這個問題,認真學習了該演算法。參考 演算法共分為三步 1.將字串a轉化為奇數長度字串b 2.計算字串b中以每乙個元素為中心的回文子串長度得到數字陣列c 3.獲取c中的最大值並依據此最大值擷取字串a得到目標最長的回文字串。直接上關鍵 預處理原始字串,將其轉化為奇數長度。...
PCA演算法學習記錄
重要宣告 以下內容主要參考吳恩達機器學習課程和張洋的pca數學原理文章 降維 dimensionality reduction 降維的目的 1 資料壓縮 2 視覺化資料。pca principal component analysis 是一種常用的資料分析方法。pca通過線性變換將原始資料變換為一組...
mysql Join演算法學習記錄
通過此次學習可以了解到join演算法的種類和原理,從而達到優化join語句 join演算法分類 nested loop join 中文意思為 巢狀迴圈鏈結 在mysql的實現中,nested loop join有3種實現的演算法 nested loop index nested loop join ...