原创 Leetcoder 887. Super Egg Drop(動態規劃)

題意:給K個雞蛋,有N層樓,問至少要多少次扔雞蛋才能保證找出摔破雞蛋的臨界樓層,雞蛋碎了就沒了。 思路:首先題意要搞清楚,是要保證能找出臨界點,也就是你採取的方案無論臨界點在哪一層,都必須在扔這麼多次之內找出來。 方法一:dp[i][j]

原创 記一次Linux C++ Segmentation fault處理

段錯誤有可能是重複free指針或者操作野指針,今天遇到了一個段錯誤bug,是由於某函數聲明瞭返回值(應該返回一個shared_ptr),但是函數實現忘記return導致的,雖然使用這個函數時沒有用到它的返回值,但是依然報錯,gdb調試指向

原创 IO多路複用EPOLL的ET模式下EPOLLIN事件觸發時機

網上說的太宏觀,自己測試一下各種情況,FD爲nonblock。 0.客戶端發送新數據過來,單線程阻塞在epoll_wait,epoll_wait返回可讀事件。 1.單線程阻塞在epoll_wait,客戶端發送新數據過來,epoll_wai

原创 leetcoder:41. 缺失的第一個正數 & 76. 最小覆蓋子串

給定一個未排序的整數數組,找出其中沒有出現的最小的正整數。 你的算法的時間複雜度應爲O(n),並且只能使用常數級別的空間。 思路:首先答案肯定在1~n,那麼我們建個長度爲N的數組,掃一遍元素組把位於1~n的數放到桶裏面,最後掃一下哪個最小

原创 leetcoder:124. 二叉樹中的最大路徑和 & 149. 直線上最多的點數

給定一個非空二叉樹,返回其最大路徑和。 本題中,路徑被定義爲一條從樹中任意節點出發,達到任意節點的序列。該路徑至少包含一個節點,且不一定經過根節點。 思路:遞歸,維護以每個點爲開始往下延伸的路徑的最大值回傳給父節點,同時更新答案最大值。

原创 利用yaml-cpp庫對數據結構序列化

有時候我們要將一個int、float、bool轉成字符串,這個用boost能簡單地實現,但是一些複雜的數據結構比如STL的vector、map、list、set甚至是組合的vector<vector<int> >、map<string,

原创 C++模板類實現std::list

list是以鏈表爲底層的STL容器,下面用模板類實現它的基本功能,部分思路參考C++泛型STL原理和應用。 list實現的函數: push_front() push_back() pop_front() pop_back() begin

原创 signal()信號測試

測試代碼1: # include <stdio.h> # include <error.h> # include <sys/types.h> # include <string.h> # include <signal.h> typed

原创 JSON字符串解析器(unicode轉utf-8)

圖片和代碼思路均參考:https://zhuanlan.zhihu.com/p/22731540 json的字符串格式爲"...",下面寫個解析器來解析json的字符串也就是主要處理包含轉義字符\這種情況,其中\u表示unicode字符,

原创 CF1132C:Painting the Fence(暴力)

C. Painting the Fence time limit per test 2 seconds memory limit per test 256 megabytes input standard input output sta

原创 C語言多線程互斥鎖

互斥鎖是爲了防止多個線程同時操作臨界資源,下面看看用法: # include <stdio.h> # include <pthread.h> pthread_mutex_t mute; int value = 0; void *fun

原创 EPOLL高併發服務器

IO複用模型有select、poll、epoll,關於它們的區別: 1.select能處理的fd數量很少,默認2048個,而epoll的fd數量沒有限制,只與內存大小有關。 2.select當fd就緒時,需要將所有fd拷貝到內核態再將活躍

原创 CF1117C. Magic Ship(二分)

C. Magic Ship time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard ou

原创 劍指offer:整數中1出現的次數(從1到n整數中1出現的次數)(數位dp)

求出1~13的整數中1出現的次數,並算出100~1300的整數中1出現的次數?爲此他特別數了一下1~13中包含1的數字有1、10、11、12、13因此共出現6次,但是對於後面問題他就沒轍了。ACMer希望你們幫幫他,並把問題更加普遍化,可

原创 劍指offer:數組中的逆序對(分治)

  [編程題]數組中的逆序對 熱度指數:243682 時間限制:2秒 空間限制:32768K 算法知識視頻講解 在數組中的兩個數字,如果前面一個數字大於後面的數字,則這兩個數字組成一個逆序對。輸入一個數組,求出這個數組中的逆序對的總數P