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
# 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] = 99Các thao tác cơ bản
Thêm phần tử
Python
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ử
Python
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ối | O(1) |
| Thêm/xóa đầu hoặc giữa | O(n) |
| Tìm kiếm | O(n) |
Kỹ thuật Two Pointers
Python
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 arrKỹ thuật Sliding Window
Python
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_sumTwo Sum Problem
Python
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