原创 編譯原理 - 遞歸向下法語法分析(Java版)

這個程序有些侷限性,即不能分析任意語法。 分析的語法如下: 代碼結構如下: 代碼如下: Main.java: package cn.porkbar.recursion; import java.io.IOExce

原创 【Docker】docker命令記錄

Docker命令記錄 平時使用docker的時候總是忘了一些命令,每次使用忘了都要重新查,比較麻煩。現在整理一下。 文中命令中大寫字母爲要替換的變量。 文章目錄Docker命令記錄添加用戶到docker組步驟拉取鏡像通過Docke

原创 【Leetcode】137.只出現一次的數字(邏輯運算推導)

題目鏈接 點擊打開鏈接 題目描述 解題思路 首先我們分析一下題意,一個數組中只有一個數出現了1次,其餘的數都出現了3次。並且要求O(n)O(n)O(n)的時間複雜度和O(1)O(1)O(1)的空間複雜度。也就是不能用線性表、Ha

原创 牛客刷題 - 網易2018校招編程題(思維 & 貪心)

這套題的難受還是有的,不過有些題想想還是可以做的,只是有些題用暴力的方法感覺有點失望。 Q1: 解題思路:這個題很明顯,一個只能產奇數,一個只能產偶數,倒着分奇偶跑一遍就行啦~ 代碼如下: #include <cstdio>

原创 【Leetcode】26.只出現一次的數字III(位運算)

題目鏈接 點擊打開鏈接 題目描述 題解 兩個位運算 異或: 兩個相同的數異或結果爲0;0和任意值異或結果爲那個數。 x&(-x): 結果爲x的二進制位的最後一位。 舉個例子(第一位爲符號位): 10 -> (0 00000…

原创 【Leetcode】144.二叉樹的前序遍歷(非遞歸,Morris算法)

題目鏈接 點擊打開題目鏈接 題目描述 題解 遞歸 遞歸的解法非常簡單,代碼也比較精簡。時間複雜度爲O(n)O(n)O(n),空間複雜度爲O(n)O(n)O(n)。 dfs 用棧(Stack)來保存結點,類似遞歸。時間複雜度爲O(

原创 【Leetcode】23.合併K個排序鏈表(最小堆)

題目鏈接 點擊打開題目 題目描述 題解 有多種方法,這個題我使用最小堆的方法。 首先了解一下最小堆的概念:最小堆 構建、插入、刪除的過程圖解 解題步驟 首先以各鏈表的頭指針爲結點構建一棵完全二叉樹。 按最小堆的形式整理二叉樹。

原创 【NYoj】34 - 韓信點兵(CRT)

點擊打開題目   韓信點兵 時間限制:3000 ms  |  內存限制:65535 KB 難度:1   描述 相傳韓信才智過人,從不直接清點自己軍隊的人數,只要讓士兵先後以三人一排、五人一排、七人一排地變換隊形,而他每次只掠一眼隊伍的

原创 【Leetcode】142.環形鏈表-ii(快慢指針)

題目鏈接 點擊打開鏈接 題目描述 題解 是否是循環鏈表 使用快慢指針法,慢指針一次走1個結點,快指針一次走2個結點,從頭開始走會出現下面兩種情況: 快指針變成NULL,說明鏈表不循環。 快慢指針相遇,說明鏈表循環,但循環節的起

原创 【Leetcode】5.最長迴文子串(Manacher算法)

題目鏈接 點擊打開題目 題目描述 題解 這題二刷的時候又忘了怎麼做了,實在是不應該,以後還得用博客記一下。 常規做法就是以每個字母爲中心,向兩個方向搜索結果,時間複雜度爲O(n2)O(n^2)O(n2)。而Manacher(