Giả sử chúng ta có một ma trận 2D mà mỗi hàng được sắp xếp theo thứ tự tăng dần. Chúng ta phải tìm số nhỏ nhất tồn tại trong mọi hàng. Nếu không có kết quả như vậy, trả về -1.
Ví dụ, nếu đầu vào là:
| 2 | 3 | 5 |
| 5 | 10 | 10 |
| 1 | 3 | 5 |
thì đầu ra sẽ là 5
Để giải quyết, chúng ta thực hiện các bước sau:
- nếu ma trận rỗng, trả về -1
- first := tập hợp (set) mới từ hàng đầu tiên của ma trận
- với mỗi hàng trong ma trận:
- first := Giao (intersection) first với tập hợp các phần tử của hàng
- nếu first rỗng, trả về -1
- trả về min(first)
Ví dụ
class Solution:
def solve(self, matrix):
if not matrix:
return -1
first = set(matrix[0])
for row in matrix:
first &= set(row)
if not first:
return -1
return min(first)
ob1 = Solution()
matrix = [
[2, 3, 5],
[5, 10, 10],
[1, 3, 5]
]
print(ob1.solve(matrix))
Input
matrix = [ [2, 3, 5], [5, 10, 10], [1, 3, 5] ]
Output
5