บทเรียนที่ 1Heap และ Priority Queue: หาค่ามัธยฐานแบบสตรีมมิ่ง, k ค่าน้อย/มากที่สุด, รวม k ลิสต์/อาร์เรย์ที่เรียงแล้วเชี่ยวชาญ Heap และ Priority Queue เพื่อติดตามค่าสุดขีดในสตรีมข้อมูลอย่างมีประสิทธิภาพ คุณจะเขียน Min-heap และ Max-heap แก้ปัญหา k ค่าน้อย/มากที่สุด และรวมหลายลิสต์หรืออาร์เรย์ที่เรียงแล้ว
การดำเนินการ Min-heap และ Max-heapหาค่ามัธยฐานแบบสตรีมมิ่งด้วย Heap สองตัวหา k ค่าน้อยที่สุดและมากที่สุดรวม k ลิสต์หรืออาร์เรย์ที่เรียงแล้วCustom comparators และการตัดสินเสมอข้อผิดพลาด Heap และต้นทุนประสิทธิภาพบทเรียนที่ 2Binary Search: ค้นหาบนดัชนี, พื้นที่คำตอบ, ฟังก์ชันเชิงเดี่ยว; รูปแบบ lower/upper boundเรียนรู้ว่า Binary Search ขยายไปไกลกว่าอาร์เรย์ที่เรียงแล้วไปสู่การค้นหาในช่วงดัชนี พื้นที่คำตอบ และ predicate เชิงเดี่ยว คุณจะฝึก lower และ upper bound และหลีกเลี่ยงข้อผิดพลาด off-by-one ทั่วไป
Binary Search บนอาร์เรย์ที่เรียงแล้วBinary Search บนช่วงดัชนีBinary Search บนพื้นที่คำตอบBinary Search บน predicate เชิงเดี่ยวรูปแบบ Lower และ Upper boundข้อผิดพลาด off-by-one ทั่วไปบทเรียนที่ 3Dynamic Programming: subproblem ที่ทับซ้อน, memoization vs tabulation, การออกแบบ state และ transitionsเข้าใจ Dynamic Programming ในฐานะการทำ recursion ที่ปรับปรุงแล้วบน subproblem ที่ทับซ้อน คุณจะออกแบบ state, transitions, base case, เปรียบเทียบ memoization กับ tabulation และฝึก pattern DP 1D 2D สำหรับสัมภาษณ์
ระบุ subproblem ที่ทับซ้อนกำหนด DP state และ dimensionsออกแบบ transitions และ base caseรูปแบบ Top-down memoizationรูปแบบ Bottom-up tabulationการปรับพื้นที่และ rolling arraysบทเรียนที่ 4Recursion และ Backtracking: การเดินทางต้นไม้/กราฟ, การสร้างแบบ combinatorial, constraint satisfactionพัฒนาทักษะ recursion และ backtracking สำหรับการเดินทางต้นไม้และกราฟ การสร้างแบบ combinatorial และ constraint satisfaction คุณจะเรียนรู้พฤติกรรม call stack, กลยุทธ์ pruning และโครงสร้าง template ที่ใช้ซ้ำได้
เข้าใจ call stackการเดินทาง recursive ต้นไม้และกราฟสร้าง permutations และ combinationsSubset และ partition backtrackingConstraint satisfaction ด้วย pruningหลีกเลี่ยงการระเบิดแบบ exponentialบทเรียนที่ 5Sliding Window: กรณี fixed และ variable window สำหรับ subarray/subsequence sums และ substringสำรวจเทคนิค Sliding Window สำหรับขนาดหน้าต่างคงที่และแปรผันบนอาร์เรย์และสตริง คุณจะแก้ปัญหา subarray sum, substring, subsequence พร้อมติดตาม count, frequency และ constraint อย่างมีประสิทธิภาพ
Fixed-size window สำหรับ subarray sumsVariable window กับการขยายและหดติดตาม count และ frequencyจัดการ constraint และ validity checkรูปแบบ substring สัมภาษณ์ทั่วไปเมื่อ Sliding Window ล้มเหลวหรือใช้ผิดบทเรียนที่ 6Fast/Slow Pointers: การตรวจจับ cycle, หาตำแหน่งกลางใน linked list, การประยุกต์ tortoise-hareศึกษารูปแบบ fast และ slow pointer บน linked list และ sequence คุณจะตรวจจับ cycle, หาตำแหน่งเริ่ม cycle, หาตำแหน่งกลาง และปรับ tortoise-hare ไปใช้โครงสร้างอื่นและสถานการณ์สัมภาษณ์
ตรวจจับ cycle ใน linked listหา cycle entry nodeหาตำแหน่งกลางของ linked listความยาวและโครงสร้าง cycleTortoise-hare ในปัญหาอาร์เรย์Edge case และความปลอดภัย pointerบทเรียนที่ 7Hashing และ Sets/Maps: นับ frequency, ปรับ sliding-window, deduplication และ lookupใช้ hashing, sets, maps สำหรับ lookup แบบ constant-time, deduplication และนับ frequency คุณจะปรับ sliding window, ตรวจ anagram และออกแบบโซลูชัน hash ที่แข็งแกร่งพร้อมหลีกเลี่ยง collision
พื้นฐาน Hash table, set, mapรูปแบบนับ frequencyตรวจ membership และ existenceเทคนิค sliding window ด้วย hashDeduplication และ uniqueness testปัญหา collision และความแข็งแกร่งบทเรียนที่ 8Greedy Algorithms: การพิสูจน์ local-choice, interval scheduling, การเลือกแบบ Huffmanเรียนรู้การออกแบบและพิสูจน์ Greedy Algorithm ที่เลือก locally optimal คุณจะแก้ interval scheduling, activity selection, การสร้างแบบ Huffman พร้อมพิสูจน์ความถูกต้องหรือหา counterexample
ระบุปัญหาที่เหมาะกับ greedyExchange argument และ proofInterval scheduling และ activity selectionเลือกจุดหรือทรัพยากรน้อยที่สุดกลยุทธ์เลือกแบบ HuffmanCounterexample ของ greedy ง่ายๆบทเรียนที่ 9BFS และ DFS บน Trees และ Graphs: ปัญหา level-order, shortest path ในกราฟไม่ถ่วงน้ำหนัก, topologicalประยุกต์ BFS และ DFS อย่างเป็นระบบบนต้นไม้และกราฟ คุณจะแก้ปัญหา level-order และ shortest path ในกราฟไม่ถ่วงน้ำหนัก, topological exploration และจัดการ visited tracking กับ adjacency
การเดินทางต้นไม้ด้วย DFS BFSการแทนกราฟและ adjacencyVisited set และ cycle handlingปัญหา level-order และ layeringShortest path ในกราฟไม่ถ่วงน้ำหนักTopological ordering และ DAG checkบทเรียนที่ 10Two Pointers: จับคู่อาร์เรย์เรียง, reversal ในที่, partitioning, เทคนิค deduplicationใช้เทคนิค two-pointer บนอาร์เรย์และสตริงสำหรับจับคู่, partitioning, update ในที่ คุณจะฝึก pair sum ที่เรียง, Dutch flag partitioning, deduplication, reversal โดยไม่ใช้หน่วยความจำเพิ่ม
Pointer สองปลายบนอาร์เรย์เรียงPointer สแกนทิศทางเดียวกันReversal ในที่ของอาร์เรย์และลิสต์Partitioning และ Dutch flag patternDeduplication และ compression ในที่Two pointers เทียบ sliding window