Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Segment Tree Basics
Search
halfrost
January 15, 2020
Programming
1.1k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Segment Tree Basics
halfrost
January 15, 2020
More Decks by halfrost
See All by halfrost
Redis multi-data center two-way synchronization
halfrost
0
740
Redis design ideas and usage specifications
halfrost
0
580
Golang message streaming practice in Eleme
halfrost
0
560
SQL practical optimization
halfrost
0
500
Fundamentals of Cryptography
halfrost
0
410
The practice of spatial index in geographic service
halfrost
0
490
Getting started with Machine Learning
halfrost
0
360
Functional Reactive Programming
halfrost
0
420
Eleme Report
halfrost
1
480
Other Decks in Programming
See All in Programming
ハーネス設計入門 〜プロンプト、コンテキストの次〜
kinopeee
53
35k
一参加者から『中の人』へ 〜全通PHPerがブースに立って学んだ、カンファレンスを100倍楽しむコツ〜
wp_daisuke
0
110
業務時間外もAIに働いてもらう話
colorful12
3
9.9k
LLMは4年分のCompose移行を再現できるのか?実プロダクト279件のXMLで探る自動化の境界線
makun
0
380
[DroidKaigi 2026] Bring your own phones to Gradle Managed Devices
f2lk
0
110
Go を使い始めて 2 ヶ月の学び / My first two months with Go
contour_gara
0
420
Press start. Python's next generation.
willingc
PRO
3
300
[PyCon KR 2026] More Variants, More Diversity for AI Accelerators
achimnol
0
130
まだ間に合う!今年の夏こそSchemeのマクロ展開器を完全理解!
omasanori
0
630
Go 1.27からのGODEBUG / Go 1.27 リリースパーティ #go127party
mazrean
0
300
AIと壁打ちしながら進めるコスト管理
fufuhu
2
1.9k
Vibes Containers 〜AIで変わるコンテナ設計と運用〜
tkikuc
1
470
Featured
See All Featured
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
250
How to Ace a Technical Interview
jacobian
281
24k
The Limits of Empathy - UXLibs8
cassininazir
1
640
Unsuck your backbone
ammeep
672
58k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
490
Skip the Path - Find Your Career Trail
mkilby
1
220
SEO for Brand Visibility & Recognition
aleyda
0
4.7k
Agile that works and the tools we love
rasmusluckow
331
22k
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
370
Discover your Explorer Soul
emna__ayadi
2
1.3k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
270
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
35
2.8k
Transcript
Segment Tree 基础篇
Range Minimum/Maximum Query •需求:在饿了么的⼀个⽤户的历史订单中,找出该⽤户指定⼀段 时间内单笔订单最贵/最便宜的订单 One problem •O(n), when query
K —> ∞ times ?
Range Minimum/Maximum Query •需求:在饿了么的⼀个⽤户的历史订单中,求出找出该⽤户指定 ⼀段时间内累积消费总⾦额 Another problem •O(n), when query
K —> ∞ times ? •prefixSum, time O(n), query O(1)
Range Minimum/Maximum Query •需求:在 12306 ⽹站上,统计⼀条线路上任意指定两个站点之间 的可售出的票数总和 One more thing
•O(n), when query K —> ∞ times ? •prefixSum, time O(n), update O(n), query O(1)
How to ? Range Minimum/Maximum Query 5 O(log n) or
O(1) ?
Presentation agenda 6 What How to use Leetcode example What
is segment tree 2 3 1 How Example
Define Segment Tree 7 1. ❌ Complete Binary Tree 2.
∈ Balanced Binary Tree 3. As Full binary tree
How many node Segment Tree 8 0-level : 1 1-level
: 2 2-level : 4 3-level : 8 4-level : 16 (n-1)—level :2^(n-1) n-level:2^n Σ 0-(n-1) level:Σ = 2^n - 1 ≈ n-level => 2n Mathematical Induction:Σ = 4n (n = 2^k or n = 2^k + 1)
How many node Segment Tree 9 •When n≥3, [1,n] segment
split [1,n] into 2*⌊log (n-1)⌋ sub- Interval •4n ≥ 2*⌊log (n-1)⌋ <= 2n ≥ log (n-1) <= 4^n ≥ n-1
How to create Segment Tree 10
How to query Segment Tree 11 ❗
How to update Segment Tree 12 ❗
How to update Segment Tree 13 •Update [2,3] ? •❌
O(n)
How to update Segment Tree 14 •Update [2,3] ? •✅O(log
n)
How to update Segment Tree 15
How to query Segment Tree 16 •push_down
How to update Segment Tree 17 •push_down + push_up
How to low space Segment Tree 18 •Leetcode 715
Compared ST VS Array 19 20% 80% 60% 40% 2585
785 Update: Array O(n) | Segment Tree O(log n) Query: Array O(n) | Segment Tree O(log n)
Segment Tree 20 Example
Segment Tree 21 Example
Segment Tree 22 Example
Boyer-Moore Majority Vote Algorithm 23 Example
Segment Tree 24 Example
Segment Tree 25 Example •judge threshold •count = map[1:[0 1
4 5] 2:[2 3]] •eg: 1 in [0,5] count , twice binary search, find [lowerBound, upperBound) •(upperBound - lowerBound) ≥ threshold
Segment Tree 26 •Leetcode 327. Count of Range Sum •Leetcode
715. Range Module •Leetcode 699. Falling Squares & 732. My Calendar III •Leetcode 850. Rectangle Area II •Leetcode 218. The Skyline Problem Exercise
Advance 27 15% 35% 50% •One point update (update: min/change,
query: sum/min) •Interval update (update: min/change, query: sum/hash) •Discretization •Interval merge •Scan line •Binary Index Tree