Giả sử chúng ta có một ma trận, chúng ta phải sắp xếp từng cột theo thứ tự tăng dần.
Vì vậy, nếu đầu vào giống như
11 | 21 | 31 |
6 | 6 | 4 |
1 | 11 | 8 |
thì đầu ra sẽ là
1 | 6 | 4 |
6 | 11 | 8 |
11 | 21 | 31 |
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
- R:=số hàng của ma trận, C:=số cột của ma trận
- res:=ma trận có cùng kích thước với ma trận đã cho và điền bằng 0
- đối với col trong phạm vi từ 0 đến C, thực hiện
- giá trị:=lấy các phần tử dưới dạng vectơ của ma trận [col]
- đối với hàng trong phạm vi từ 0 đến R, thực hiện
- res [row, col]:=xóa phần tử cuối cùng khỏi các giá trị
- trả lại res
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
Ví dụ
class Solution: def solve(self, matrix): R = len(matrix) C = len(matrix[0]) res = [[0] * C for _ in range(R)] for col in range(C): values = [r[col] for r in matrix] values.sort(reverse=True) for row in range(R): res[row][col] = values.pop() return res ob = Solution() matrix = [[11, 21, 31],[6, 6, 4],[1, 11, 8]] print(ob.solve(matrix))
Đầu vào
[[11, 21, 31], [6, 6, 4], [1, 11, 8]]
Đầu ra
[[1, 6, 4],[6, 11, 8],[11, 21, 31]]