LeetCode Two Pointers Problem: Trapping Rain Water
Classic two-pointer problem on LeetCode
Initial Approach
To accumulate water, each bar must have taller bars on both sides. Additionally, the water level above a bar is determined by the shorter of the two boundary bars — that is, the minimum of the left and right max heights minus the current bar's height.
The key challenge lies in identifying ...
Đăng vào ngày 4 tháng 7 lúc 23:41
Các Thuật Toán Cơ Bản trong Lập Trình Competitive
Giới thiệu
Tài liệu này ghi lại quá trình học tập các thuật toán cơ bản từ khóa học của AcWing, bao gồm các chủ đề chính như sắp xếp nhanh, tìm kiếm nhị phân, tổng tiền tố, phép toán bit và thuật toán hai con trỏ.
Sắp xếp nhanh (Quick Sort)
Bài toán 1: Sắp xếp cơ bản
#include <iostream>
using namespace std;
const int MAX_SIZE = 10001 ...
Đăng vào ngày 29 tháng 6 lúc 17:29
Giải thuật xử lý danh sách liên kết: Đảo ngược, hợp nhất và phát hiện chu trình
Đảo ngược danh sách liên kết
Một cách hiệu quả để đảo ngược danh sách liên kết là sử dụng kỹ thuật chèn đầu. Ta duyệt qua từng nút trong danh sách gốc, tách từng nút ra và chèn vào đầu danh sách mới. Trong quá trình này, cần lưu trữ con trỏ đến nút kế tiếp trước khi thay đổi liên kết.
struct ListNode* reverseList(struct ListNode* head) {
s ...
Đăng vào ngày 12 tháng 6 lúc 20:14
Kỹ thuật Hai Con trỏ và Ứng dụng trong Thuật toán
Tổng quan về kỹ thuật hai con trỏ
Kỹ thuật hai con trỏ (Two Pointers) là một phương pháp tối ưu hóa thuật toán hiệu quả, giúp giảm độ phức tạp thời gian trong nhiều bài toán. Thay vì sử dụng vòng lặp lồng nhau với độ phức tạp $O(n^2)$, ta sử dụng hai biến chỉ số (con trỏ) để duyệt qua cấu trúc dữ liệu, thường là mảng hoặc danh sách liên kết.
Cá ...
Đăng vào ngày 12 tháng 6 lúc 08:58