原创 鏈表的歸併排序 & leetcode 148. 排序鏈表

發現鏈表的歸併排序要注意的點還真挺多。 對元素的劃分,即要把鏈表從中間斷開,這個可以利用一個快指針每次走兩步,一個慢指針一次走一步的做法來實現,並記錄前半部分鏈表的最後一個節點。 對鏈表的合併,這個我是利用遞歸,很容易理解與實現

原创 Codeforces Round #578 (Div. 2) 題解報告

A. Hotelier sb模擬,直接按題意模擬就可以了。 B. Block Adventure Gildong is playing a video game called Block Adventure. In Block A

原创 Codeforces Round #521

A題 res = a*(k - k/2) - b*(k/2) 注意用long long B 題 改變最小的a,使得序列中不存在1 0 1的情況。 掃描一遍,遇到101的時候,把後面一個1給翻轉成0,然後記錄一下次數輸出。 C 題

原创 leetcode 974. 和可被 K 整除的子數組

給定一個整數數組 A,返回其中元素之和可被 K 整除的(連續、非空)子數組的數目。 示例: 輸入:A = [4,5,0,-2,-3,1], K = 5 輸出:7 解釋: 有 7 個子數組滿足其元素之和可被 K = 5 整除: [4

原创 劍指offer - 滑動窗口最大值 (單調隊列的使用)& POJ 2823 & leetcode 239. 滑動窗口最大值

給定一個數組和滑動窗口的大小,找出所有滑動窗口裏數值的最大值。例如,如果輸入數組{2,3,4,2,6,2,5,1}及滑動窗口的大小3,那麼一共存在6個滑動窗口,他們的最大值分別爲{4,4,6,6,6,5}; 針對數組{2,3,4,

原创 Codeforces Round #554 (Div. 2) C. Neko does Maths(數論)

C. Neko does Maths time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandar

原创 leetcode 41. First Missing Positive(思維)

First Missing Positive Hard 2902 741 Add to List Share Given an unsorted integer array, find the smallest missing p

原创 Leetcode 155. 最小棧 O(1)空間複雜度的做法

設計一個支持 push,pop,top 操作,並能在常數時間內檢索到最小元素的棧。 push(x) – 將元素 x 推入棧中。 pop() – 刪除棧頂的元素。 top() – 獲取棧頂元素。 getMin() – 檢索棧中的最小

原创 leetcode 1320. Minimum Distance to Type a Word Using Two Fingers (dp O(N) Solution)

You have a keyboard layout as shown above in the XY plane, where each English uppercase letter is located at some

原创 C++ primer 內存管理 allocator類

當我們分配一大塊內存時,我們通常計劃再這塊內存上按需構造對象,在次情況下,我們希望內存分配和對象構造分離。 內存分配和對象構造組合在一起可能會導致不必要的浪費,比如數組等,有時我們並不需這麼大的空間。 allocator 標準庫a

原创 C++ 智能指針 循環引用以及解決方案

今天面試碰到這個問題了,結果自己沒有搞清楚是個是麼問題。感覺面試官說的也不太清楚。。我理解成兩個兩個智能指針A = B B = A,A = B,這種了。。。我還說這種不會引計數器多++。。尷尬。。自己基礎方面還是有點問題。。 循環

原创 C++ 智能指針

在C++中,動態內存的管理通過new 和 delete來進行。 但卻經常存在以下三個常見問題: 忘記通過delete 釋放內存,這在編程中經常發生,尤其在某個函數內申請的一塊內存作爲臨時使用,但在函數結束後卻沒釋放。這就會導致“

原创 Codeforces Round #576 (Div. 2) 題解

7.30號的cf,很久沒打cf了,決定打一下,果然掉了10分。。。幸好還是藍名。。。打完第二天就發了高燒也是無語。。。吃藥在宿舍躺屍兩天,決定把題解寫下。。 A. City Day 題目很簡單,不過英文有點繞。就是找到第一個符合的

原创 leetcode 995. K 連續位的最小翻轉次數 (區間更新,單點查詢)

在僅包含 0 和 1 的數組 A 中,一次 K 位翻轉包括選擇一個長度爲 K 的(連續)子數組,同時將子數組中的每個 0 更改爲 1,而每個 1 更改爲 0。 返回所需的 K 位翻轉的次數,以便數組沒有值爲 0 的元素。如果不可能

原创 殭屍進程以及消滅殭屍進程

進程:佔用內存空間的正在運行的程序,是系統進行資源分配和調度的基本單位。 進程在完成工作後應該被銷燬,如果完成工作後,仍佔用系統資源不被銷燬,就會變爲殭屍進程,給系統帶來負擔。 殭屍進程的產生 向exit函數傳遞參數值,或者是通過