Mô tả bài toán
Cho ma trận 2D, mỗi hàng và cột sắp xếp không giảm. Tìm số nhỏ thứ n (0-indexed).
Ví dụ: ma trận [[2,4,30],[3,4,31],[6,6,32]], n = 4 → đầu ra 6.
Giải thuật (Làm phẳng và sắp xếp)
- Tạo danh sách
lstchứa tất cả phần tử ma trận. - Sắp xếp
lst. - Trả về
lst[n].
Lưu ý: Giải pháp này đơn giản nhưng không tối ưu cho ma trận lớn. Có thể dùng heap hoặc binary search để tối ưu.
Ví dụ mã Python
class Solution:
def solve(self, matrix, n):
lst = []
for i in matrix:
for j in i:
lst.append(j)
lst.sort()
return lst[n]
ob = Solution()
matrix = [[2, 4, 30], [3, 4, 31], [6, 6, 32]]
n = 4
print(ob.solve(matrix, n))
Đầu vào
matrix = [ [2, 4, 30], [3, 4, 31], [6, 6, 32] ] n = 4
Đầu ra
6