Bài toán: Cho ma trận vuông, kiểm tra xem ma trận có không thay đổi sau khi đảo ngược từng hàng (reverse each row) hay không. Tức là mọi hàng đều phải là palindrome.
Triển khai Python
def solve(matrix):
n = len(matrix)
for i in range(n):
left, right = 0, n - 1
while left <= right:
if matrix[i][left] != matrix[i][right]:
return False
left += 1
right -= 1
return True
# Test
matrix = [
[6, 8, 6],
[2, 8, 2],
[3, 3, 3]
]
print(solve(matrix)) # True: mọi hàng đều palindrome
matrix2 = [
[1, 2, 3],
[4, 5, 6]
]
print(solve(matrix2)) # False
Kết quả
True
Giải thích
- Ma trận không đổi sau khi reverse từng hàng ⟺ mỗi hàng là palindrome.
- Duyệt từng hàng, hai con trỏ
left,rightso sánh đối xứng. - Độ phức tạp: O(n²) với n = kích thước ma trận.
- Không cần tạo ma trận mới, kiểm tra trực tiếp.