Skip to Content
🧮 CTDL & Giải thuật📊 Mảng (Array)

Mảng (Array)

Array là gì?

Mảng (Array) là cấu trúc dữ liệu lưu trữ các phần tử liên tiếp trong bộ nhớ, cho phép truy cập nhanh bằng chỉ số (index).

💡

Array là cấu trúc dữ liệu cơ bản nhất. Trong hầu hết ngôn ngữ, mảng có truy cập O(1) theo index!

Khai báo và khởi tạo

# Python dùng List (dynamic array) arr = [10, 20, 30, 40, 50] # 0 1 2 3 4 ← index # Truy cập print(arr[0]) # 10 print(arr[-1]) # 50 (phần tử cuối) # Cập nhật arr[2] = 99

Các thao tác cơ bản

Thêm phần tử

arr = [10, 20, 30] arr.append(40) # Thêm cuối: O(1) arr.insert(1, 15) # Thêm vào vị trí: O(n) arr.extend([50, 60]) # Thêm nhiều phần tử

Xóa phần tử

arr = [10, 20, 30, 40, 50] arr.remove(30) # Xóa theo giá trị: O(n) del arr[1] # Xóa theo index: O(n) last = arr.pop() # Xóa và trả về cuối: O(1)

Độ phức tạp

Thao tácĐộ phức tạp
Truy cập arr[i]O(1)
Thêm/xóa cuốiO(1)
Thêm/xóa đầu hoặc giữaO(n)
Tìm kiếmO(n)

Kỹ thuật Two Pointers

def reverse_array(arr): """Đảo ngược mảng in-place""" left, right = 0, len(arr) - 1 while left < right: arr[left], arr[right] = arr[right], arr[left] left += 1 right -= 1 return arr

Kỹ thuật Sliding Window

def max_sum_subarray(arr, k): """Tìm tổng lớn nhất của k phần tử liên tiếp""" n = len(arr) window_sum = sum(arr[:k]) max_sum = window_sum for i in range(k, n): window_sum += arr[i] - arr[i - k] max_sum = max(max_sum, window_sum) return max_sum

Two Sum Problem

def two_sum(arr, target): """Tìm 2 số có tổng bằng target""" seen = {} for i, num in enumerate(arr): complement = target - num if complement in seen: return [seen[complement], i] seen[num] = i return []

Tiếp theo: Danh sách liên kết (Linked List)

Last updated on