原创 「力扣」第 29 場雙週賽代碼(前 3 題)

比賽時間:北京時間 2020 年 6 月 27 日晚 10:30 再接再厲! 第 1 題:去掉最低工資和最高工資後的工資平均值 Java 代碼: public class Solution { public double

原创 「力扣」第 195 場周賽代碼(前 2 題)

比賽時間:北京時間 2020 年 6 月 28 日早 10:30 再接再厲! 第 1 題:判斷路徑是否相交 Java 代碼: import java.util.HashMap; import java.util.HashSet;

原创 「線段樹」第 2 節:寫出預處理數組的結構

由於「線段樹」是平衡二叉樹,因此可以使用數組表示 以前我們學習過「堆」,知道「堆」是一棵「完全二叉樹」,因此「堆」可以用數組表示。基於此,我們很自然地想到可以用數組表示「線段樹」; 完全二叉樹的定義:除了最後一層以外,其餘各層的

原创 「線段樹」第 1 節:線段樹是原始數組的一個預處理數組

線段樹(segment tree)又稱「區間樹」,是一個高級數據結構,應用的對象是「數組」; 線段樹是一種實現了高效的「區間查詢」與「區間更新」的數據結構。 前置知識:理解「前綴和」數組 preSum[i] 表示 nums

原创 「樹狀數組」第 2 節:理解預處理數組 C

「樹狀數組」第 2 節:理解預處理數組 C 我們看看樹狀數組長什麼樣。 樹狀數組的樣子 例 5 我們以一個有 8 個元素的數組 A 爲例(如上圖),在數組 A 之上建立一個數組 C,使得數組 C 的形成如上的一個多叉樹形狀,數組

原创 「樹狀數組」第 3 節:理解 lowbit 操作

下面我們介紹一種很酷的操作,叫做 lowbit ,它可以高效地計算 2k2^k2k,即我們要證明: lowbit(i)=2k {\rm lowbit}(i) = 2^k lowbit(i)=2k 其中 kkk 是將 iii 表示

原创 「樹狀數組」第 4 節: 相關例題

其實下面這兩個問題本質上是一個問題。 例 1:《劍指 Offer 》第 51 題:逆序數的計算 劍指 Offer 51. 數組中的逆序對。 在數組中的兩個數字如果前面一個數字大於後面的數字,則這兩個數字組成一個逆序對。 輸入

原创 「樹狀數組」第 1 節:樹狀數組能解決的問題

關鍵詞:位運算、前綴和的查詢與更新。 第 1 節 樹狀數組能解決的問題 樹狀數組,也稱作「二叉索引樹」(Binary Indexed Tree)或 Fenwick 樹。 它能高效地實現下面兩個操作: 數組的「前綴和」查詢; 數組

原创 「線段樹」第 4 節:區間更新(單點更新)

區間更新(單點更新) 想一想更新的步驟,根據畫圖分析。從樹的根開始更新,先把數據更新了,再更新 tree。set方法 的設計與實現,其實是程式化的,這個過程熟悉了以後寫起來,就會比較自然。最後不要忘記 merge 一下,從葉子結點

原创 「線段樹」第 3 節:創建線段樹與區間查詢

根據原始數組創建線段樹 這一節的目標是:我們把員工的信息輸入一棵線段樹,讓這棵線段樹組織出領導架構。即已知 data 數組,要把 tree 數組構建出來。 分析遞歸結構,重點體會:二叉樹每做一次分支都是「一分爲二」進行的,因此線

原创 「力扣」第 525 題:連續數組(前綴和 + 哈希表,把 0 看成 -1)

地址:https://leetcode-cn.com/problems/contiguous-array/ 題解:https://leetcode-cn.com/problems/contiguous-array/solution

原创 動態規劃:第 2 節:理解「最優子結構」(自己的草稿,內容不嚴謹,與之前有重複,不用看)

這一節我們向大家介紹「最優子結構」這個概念,具體來說就是:問題的最優解參考了子問題的最優解。 這個提法比較學術,我們還是用具體的例子和大家解釋。這道題是「力扣」上第 322 號問題:零錢兌換。 給定不同面額的硬幣 coins 和

原创 「劍指Offer」第 51 題:數組中的逆序數(分治思想,草稿)

大家好,這裏是「力扣」視頻題解。今天要和大家分享的是面試題第 51 題:數組中的逆序對。 這道題雖然是標註爲 hard 的一個問題,但其實它一個非常經典的問題,如果一開始沒有思路的話,可以把它當做一道例題來學習。 這道題要求我們計

原创 「力扣」第 5 題:最長迴文子串(動態規劃)

題解地址:https://leetcode-cn.com/problems/longest-palindromic-substring/solution/zhong-xin-kuo-san-dong-tai-gui-hua-by-

原创 「力扣」第 394 題:字符串解碼(棧)

地址:https://leetcode-cn.com/problems/decode-string/ Java 代碼: import java.util.ArrayDeque; import java.util.Deque; p