原创 手撕算法——單調棧

單調棧模板 Stack<Interger> stack=new stack<>(); for(int i=0;i<nums.length;i++){ while(!stack.empty()&&nums[i]>stack.pee

原创 手撕算法——歸併排序及排序鏈表

歸併排序 對於歸併排序,大家怕是都不陌生,也可以非常熟練的寫出歸併排序的代碼,因此本篇文章的重點並不是向大家介紹歸併排序,而是討論歸併排序的拓展題型——力扣:148.排序鏈表。至於歸併排序的原理可以參考:圖解排序算法(四)之歸併排

原创 手撕算法——遞歸

遞歸及相關題型 遞歸在力扣刷題中經常用到,最常見的就是使用遞歸來遍歷二叉樹。因此今天總結一下遞歸求解問題的套路以及常考的面試題,能力有限,如有不對大家多多指教。 遞歸解題思路 遞歸,就是在函數內部調用函數本身,因此遞歸適用於求解可

原创 手撕算法——01揹包問題

題目描述 01揹包問題 有 N 件物品和一個容量是 V 的揹包。每件物品只能使用一次。 第 i 件物品的體積是 vi,價值是 wi。 求解將哪些物品裝入揹包,可使這些物品的總體積不超過揹包容量,且總價值最大。 輸出最大價值。 輸入

原创 手撕算法——搞定BFS

BFS的答題模板 BFS,廣度優先搜索 答題模板 (1)創建隊列 (2)將頭結點放入隊列 (3)當隊列不爲空的時候進行遍歷 Queue<T> queue=new LinkedList<>(); queue.add(root); w

原创 java——多線程基礎

1、線程的理解: (1)線程的使用: 線程的學習難點並不在於如何創建、開啓一個線程,而是應該何時創建,線程如何同步,使得程序能夠運行得到預期的結果。 比如文字處理程序 你可以設置每隔多長時間 輸入的內容可以自動的保存 而這個保

原创 手撕算法——二叉樹中和爲某一值的路徑及變形

二叉樹樹中和爲某一值的路徑,該題目是劍指offer上的一道題目,第一次刷題的時候一次就過了,所以沒有當回事,當我遇到一個該題目的變形題的時候卻一直通過不了,發現自己還是眼高手低,因此重新總結和記錄一下。 二叉樹中和爲某一值的路徑

原创 c語言字節對齊的計算方式

結構體的字節對齊,在筆試中經常考到,我們先給出結論,然後以兩道例題字節對齊的計算方式。 (1)struct/class的自身對齊值。對於結構體和類的自身對齊值是所有成員中最大的自身對齊值。結構體和類的對齊原則:先將數據成員對齊,再

原创 手撕算法——二叉樹面試題目彙總

二叉樹遍歷 先序遍歷 遞歸 class Solution { public List<Integer> preorderTraversal(TreeNode root) { List<Integer> li

原创 手撕算法—— 最長迴文子串

題目描述 最長迴文子串 給定一個字符串 s,找到 s 中最長的迴文子串。你可以假設 s 的最大長度爲 1000。 示例 1: 輸入: “babad” 輸出: “bab” 注意: “aba” 也是一個有效答案。 示例 2: 輸

原创 手撕算法——快速排序及相關題型

快速排序及它的變形題型在面試中經常被問到,本文進行一下總結。 快速排序 實現快速排序的關鍵便是partition函數,這個函數的主要功能是把比選擇數字小的數字移到數組的左邊,把比選擇數字大的數字移到數組的右邊。 主要實現分爲以下四

原创 SQL——分組比較

廢話不多說了,直接上題。 部門員工最高的工資 題目來源:184. 部門工資最高的員工 Employee 表包含所有員工信息,每個員工有其對應的 Id, salary 和 department Id。 分析: Employee表中

原创 SQL——表的連接

基本知識點 多表連接分爲以下幾種類型: 1)左聯結(left join),聯結結果保留左表的全部數據 2)右聯結(right join),聯結結果保留右表的全部數據 3)內聯結(inner join),取兩表的公共數據 關於多表連

原创 SQL——查找第N高的數據

查找第N高的數據 插在第N高的數據,在學生成績查詢,薪水查詢中經常用到,下面結合一道力扣上的題來總結一下該類題型應該如何求解 第二高薪水 題目來源:176. 第二高的薪水 解決思路: 第一步:我們可以先考慮對薪水進行排序 sel

原创 手撕算法——LinkedHashMap相關的題型

原諒我的無知,之前都沒有聽說過還有LinkedHashMap這個類,最近刷題的時候卻頻頻碰到與它相關的題型,如實現LRU緩存,實質上是考察對LinkedHashMap底層的理解。再如員工工資排序,使用LinkedHashMap可以