สมมติว่าเรามีเมทริกซ์ เราต้องเรียงลำดับคอลัมน์จากน้อยไปหามาก
ดังนั้นหากอินพุตเป็นแบบ
11 | 21 | 31 |
6 | 6 | 4 |
1 | 11 | 8 |
แล้วผลลัพธ์ที่ได้จะเป็น
1 | 6 | 4 |
6 | 11 | 8 |
11 | 21 | 31 |
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- R :=จำนวนแถวของเมทริกซ์, C :=จำนวนคอลัมน์ของเมทริกซ์
- res :=เมทริกซ์ที่มีขนาดเท่ากับเมทริกซ์ที่กำหนดและเติมด้วย 0
- สำหรับ col ในช่วง 0 ถึง C ให้ทำ
- ค่า :=นำองค์ประกอบเป็นเวกเตอร์ของเมทริกซ์[col]
- สำหรับแถวที่อยู่ในช่วง 0 ถึง R ให้ทำ
- res[row, col] :=ลบองค์ประกอบสุดท้ายออกจากค่า
- ผลตอบแทน
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
ตัวอย่าง
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))
อินพุต
[[11, 21, 31], [6, 6, 4], [1, 11, 8]]
ผลลัพธ์
[[1, 6, 4],[6, 11, 8],[11, 21, 31]]