原创 672. Bulb Switcher II

問題傳送門 問題分析 TODOing 完整代碼 class Solution { public: void function(string &str, int begin, int step){ for(

原创 1267. Count Servers that Communicate

題目傳送門 分析 沒啥分析的,就是第一次遍歷標記哪行有電腦,哪列有電腦。然後在標記完成之後,我們只需要對齊再進行判斷就行。 在第一次遍歷時我們可以記錄下每臺電腦的位置,這樣我們就不必再遍歷整個grid。這個記錄操作過程我們可以優化

原创 ziplist分析

這裏直接貼ziplist.c中的作者的註釋,從註釋中我們可以直觀的看到ziplist是用於存儲string字符串的雙向鏈表,其目的是更好地利用內存去存儲數據,減少無用數據的比例。 /* The ziplist is a speci

原创 Windows 10下EDK2 stable 202002安裝

介紹 本人正在進行UEFI開發的學習,這次安裝是在window環境下安裝的,自己在安裝過程中也是遇到了很多問題,有些問題甚至還沒有解決找出原因。這次的安裝過程記錄的是一次成功的安裝,但是不保證其他版本軟件也能按照如下步驟正常安裝。

原创 297. Serialize and Deserialize Binary Tree

問題傳送門 問題分析 我們想要序列化二叉樹,可以像Leetcode序列化二叉樹那樣,存儲所有的節點和NULL。 我這裏採用另一種方式,根據二叉樹定義。每一個節點只有一個父節點。所以我們可以將二叉樹變爲一組pair<int, int

原创 Subsets

思路 SubSet 問題可以轉換爲一個遞歸問題 {first_item , SubSet(N - 1)} U {SubSet(N - 1)}。 代碼 78. Subsets class Solution { public:

原创 Weekly Contest 179

1374. Generate a String With Characters That Have Odd Counts class Solution { public: string generateTheString(

原创 CPP虛函數分析

#include <iostream> #include <string> using namespace std; /* *關閉內存對其,我們能夠看到類實際的空間大小 *(從中我們可以看出,不光是結構體存在內存對齊,類也

原创 62. Unique Paths

分析 典型動態規劃問題: 我們將pahtCount[i][j] 看作到達grid[i][j]的所有可能路徑的情況總和數。那麼我們可得 pathCount[i][j] = pathCount[i - 1][j] + pathCoun

原创 222. Count Complete Tree Nodes

問題傳送門 問題分析 完全二叉樹的節點總數問題,要分爲兩個步驟。 一、計算二叉樹層樹lev,由此我們可得lev - 1爲滿二叉樹,其節點數爲2 ^ (lev - 1) - 1 二、計算最後一層的節點數量。 代碼 class Sol

原创 890. Find and Replace Pattern

問題傳送門 分析 我們只用模擬匹配替換過程即可,需要注意的是我們在匹配過程中需要使用兩個map,來保證A -> B和B ->A的一致性。 代碼 class Solution { public: vector<string>

原创 207. Course Schedule

問題傳送門 問題分析 典型的有向圖,判斷是否存在迴路問題。這裏我使用的是Kaha算法。但是時間複雜度,空間負責度都過高,可以看出這裏我存儲時間負責和空間複雜度都爲O(n^2),其問題在於如果是完全圖他沒問題,但是針對稀疏圖則效率低

原创 857. Minimum Cost to Hire K Workers

題目傳送門 題目分析 這個問題思考的幾個關鍵點。 假如我們僱傭了K名員工,那麼我們計算這K名員工的工資需要進行如下步驟:計算每個員工的每quality需要的wage,即ratio[i] = wage[i] / quality[i

原创 974. Subarray Sums Divisible by K

傳送門 問題分析 這個問題並不是我解出來的,所以直接翻譯其解析好了。 首先我們計算A的前綴和P。 例如A = [4,5,0,-2,-3,1]則其前綴和爲P = [0,4,9,9,7,4,5]。之後我們再對前綴和進行取模運算,並記錄

原创 400. Nth Digit

問題分析 我們查找數位的方式是首先確定是第幾個數字n,然後是確定n的第幾位。 有一般規律可得, 1位數字的個數爲10 - 1個數字,其所佔數位爲(10 - 1) * 1 2位數字的個數爲100 - 10個數字,所佔數位爲(100