Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Chương trình tìm phần tử giao nhỏ nhất của mỗi hàng trong ma trận trong Python

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à:

235
51010
135

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