原创 編譯原理-語法分析的基本概念

什麼是語法分析? 根據上下文無關文法識別各種語法成分 什麼是文法?文法與語法有什麼區別?上下文無關文法?什麼是上下文無關? 什麼是上下文無關:V->w,字符 V 總可以被字串 w 自由替換,而無需考慮字符 V 出現的上下文。 BNF

原创 Java--ArrayList源碼剖析

深度複製和淺度複製的區別          Java數組的複製操作可以分爲深度複製和淺度複製,簡單來說深度複製,可以將對象的值和對象的內容複製;淺複製是指對對象引用的複製。 ArrayList底層是使用數組實現 private s

原创 簡易JVM的實現思路:C++實現

編譯器前端: 1.詞法分析:由Scanner.cc將char流轉換成一個個token給Parser.cc消費,Scanner轉換的過程中可以甄別出非法的token類型,將其打上tag=error的標籤。 2.語法分析:Parser.cc收

原创 leetcode回溯法題目總結

This structure might apply to many other backtracking questions, but here I am just going to demonstrate Subsets, Permu

原创 IntelliJ IDEA 中Spring Boot項目導入問題:External Libraries 中沒有Maven包

當External Libraries中只有<1.8>而沒有項目pom.xml中導入的Maven文件時,點擊右側菜單欄中的雙斜槓選項,toggle offline mode即採用離線模式,此時External Libraries中會自動出

原创 leetcode刷題筆記(3)

目錄 stack專題: 32    Longest Valid Parentheses 技巧題: 31. Next Permutation  桶排序: 41    First Missing Positive 貪心算法:  42.Trap

原创 leetcode刷題筆記(2)

目錄 1. Two Sum 15. 3Sum 18. 4Sum  22. 括號生成 23. Merge k Sorted Lists array專題:  26. 刪除排序數組中的重複項 80. 刪除排序數組中的重複項 II  82. 刪除

原创 Leetcode刷題筆記(1)

905. 按奇偶排序數組 題目描述:把數組中的偶數排在前面,奇數排在後面。 解法一:建立一個額外的數組,掃描兩遍原始數組,第一遍先把偶數放進去,第二遍再把奇數放進去。 class Solution { public int[

原创 Leetcode動態規劃(1)--647. Palindromic Substrings

647. Palindromic Substrings 找出一個字符串中的迴文的個數。 Example 1: Input: "abc" Output: 3 Explanation: Three palindromic strings: "

原创 LCS空間優化&01揹包利用滾動數組優化空間&逆序問題

 沒法用逆序做,只能用順序做。因爲這裏涉及到3個狀態量,即左,上,左上三個狀態量,用temp變量保存左上角的變量。空間複雜度O(n+1)+1。 但是01揹包問題卻可以用逆序做,因爲只涉及兩個狀態量:上面的和左上角的。    //LCS

原创 轉:DP問題總結

目錄     一、動態規劃初探       1、遞推       2、記憶化搜索       3、狀態和狀態轉移       4、最優化原理和最優子結構       5、決策和無後效性   二、動態規劃的經典模型        1、線性模

原创 01揹包問題

最近刷了不少題都是在01揹包問題的基礎上改編過來的。今天總結一下。 其實DP和DFS本質上就是一種遍歷,只不過是帶記憶的遍歷罷了 只要用DP能做的用遞歸一定能做,即只要拿到了迭代式就可以用遞歸暴力破解,複雜度一般爲O(2^n) 先回顧

原创 DP問題總結

DP代碼的模版:兩個for 循環,然後在循環裏面寫遞推表達式。返回數組第一個值或最後一個值。要注意的是DP問題的解代碼中是不存在遞歸的。從遍歷各個元素的角度思考遞歸式。 120. Triangle 遞推表達式: minpath[k][i

原创 二叉樹的遍歷問題

 二叉樹的遍歷問題基本都是以求二叉樹的高度的代碼爲模版出的題: public int height(TreeNode root) { if (root == null) return 0; return Math.max(he

原创 回溯法(1):全排列問題

 本文介紹回溯法的全排列問題及其兩種衍生題。解法只需要在原來的基礎上做些修改即可。   1.需要一個一維數組來保存結果集 。需要考慮以哪種屬性來構造數組,即考慮數組中要存放什麼類型的數據,反過來放行不行?具體看衍生題第2題。   2.需要