Xoay ma trận 180 độ trong python
Trong phần này, chúng ta sẽ thảo luận về cách xoay ma trận 180 độ trong Java. Trong bài toán này, một ma trận vuông được đưa ra và chúng ta phải xoay nó 1800 Show ví dụ 1 Đầu vào 4 6 7 8 9 3 2 1 9 0 4 5 8 0 3 2 đầu ra 2 3 0 8 5 4 0 9 1 2 3 9 8 7 6 4 Phương pháp xoay ma trận 180 độCó nhiều cách tiếp cận khác nhau để giải quyết vấn đề, nhưng trong phần này, chúng ta sẽ thảo luận về các cách tiếp cận sau
Trước tiên hãy bắt đầu với cách tiếp cận đơn giản nhất Cách tiếp cận ngây thơXem xét các ví dụ trên. Chúng tôi quan sát thấy rằng chúng tôi đang in các hàng của ma trận đầu vào theo thứ tự ngược lại bắt đầu từ hàng dưới cùng và đi lên Ví dụ: nếu một mảng đầu vào có 5 hàng thì hàng thứ 5 được in trước. Sau đó, hàng thứ 4 được in, rồi hàng thứ 3 được in, v.v. Hãy xem việc thực hiện phương pháp đơn giản nhất Tên tệp. XoayMatrix. java đầu ra For the following matrix: 4 6 7 8 9 3 2 1 9 0 4 5 8 0 3 2 The rotated matrix at 180 degree is: 2 3 0 8 5 4 0 9 1 2 3 9 8 7 6 4 For the following matrix: 4 7 8 6 7 9 2 1 9 1 9 0 5 4 3 5 6 7 2 1 8 9 0 5 1 The rotated matrix at 180 degree is: 1 5 0 9 8 1 2 7 6 5 3 4 5 0 9 1 9 1 2 9 7 6 8 7 4 Sử dụng ma trận chuyển vịThuật toán sau mô tả cách một người có thể sử dụng khái niệm chuyển vị của ma trận để giải quyết vấn đề Bước 1. Tính chuyển vị của ma trận đã cho Bước 2. Đảo ngược cột của ma trận chuyển vị Bước 3. Sau khi đảo cột ở bước trước, tìm lại chuyển vị của ma trận Bước 4. Đảo ngược cột của ma trận được tìm thấy trong bước 3 Ví dụ: nếu chúng ta có một ma trận đầu vào là 14 27 38 46 57 79 52 31 39 11 99 80 15 24 43 45 56 97 82 51 78 79 60 25 41 Sau đó, chuyển vị của nó sẽ là 14 79 99 45 78 27 52 80 56 79 38 31 15 97 60 46 39 24 82 25 57 11 43 51 41 Bây giờ, chúng ta sẽ đảo ngược các cột của nó 57 11 43 51 41 46 39 24 82 25 38 31 15 97 60 27 52 80 56 79 14 79 99 45 78 Một lần nữa, chúng ta sẽ hoán vị ma trận 57 46 38 27 14 11 39 31 52 79 43 24 15 80 99 51 82 97 56 45 41 25 60 79 78 Một lần nữa, chúng tôi sẽ đảo ngược các cột của nó 41 25 60 79 78 51 82 97 56 45 43 24 15 80 99 11 39 31 52 79 57 46 38 27 14 Chương trình sau đây mô tả việc thực hiện phương pháp trên Tên tệp. XoayMatrix1. java đầu ra For the following matrix: 4 6 7 8 9 3 2 1 9 0 4 5 8 0 3 2 The rotated matrix at 180 degree is: 2 3 0 8 5 4 0 9 1 2 3 9 8 7 6 4 For the following matrix: 4 7 8 6 7 9 2 1 9 1 9 0 5 4 3 5 6 7 2 1 8 9 0 5 1 The rotated matrix at 180 degree is: 1 5 0 9 8 1 2 7 6 5 3 4 5 0 9 1 9 1 2 9 7 6 8 7 4 Bằng cách hoán đổi vị tríNhư chúng ta có thể thấy trong cách tiếp cận trên, chuyển vị của ma trận phải được tìm thấy hai lần. Ngoài ra, sự đảo ngược của các cột phải được tìm thấy hai lần. Do đó, chúng ta có thể thực hiện một số tối ưu hóa để có giải pháp tốt hơn Trong cách tiếp cận này, chúng tôi sẽ hoán đổi các giá trị ở các vị trí khác nhau. Quan sát đoạn chương trình sau Tên tệp. XoayMatrix2. java đầu ra For the following matrix: 4 6 7 8 9 3 2 1 9 0 4 5 8 0 3 2 The rotated matrix at 180 degree is: 2 3 0 8 5 4 0 9 1 2 3 9 8 7 6 4 For the following matrix: 4 7 8 6 7 9 2 1 9 1 9 0 5 4 3 5 6 7 2 1 8 9 0 5 1 The rotated matrix at 180 degree is: 1 5 0 9 8 1 2 7 6 5 3 4 5 0 9 1 9 1 2 9 7 6 8 7 4 Phân tích độ phức tạp Trong các chương trình trên, chúng tôi đang duyệt qua từng hàng và cột của ma trận. Nó dẫn đến độ phức tạp thời gian là O(R * C), trong đó R là kích thước hàng của ma trận đầu vào và C là kích thước cột của ma trận đầu vào Lưu ý rằng chúng tôi không sử dụng bất kỳ không gian phụ trợ nào để lưu trữ dữ liệu; Chỉ định 4 sẽ được xoay làm đối số đầu tiên của 3. Mảng quay 90 độ ngược chiều kim đồng hồ
nguồn. 3 trả về một lượt xem. Vì một khung nhìn chia sẻ bộ nhớ với mảng ban đầu, nên việc thay đổi một giá trị sẽ thay đổi giá trị kia
nguồn. Nếu bạn muốn xử lý dưới dạng dữ liệu riêng biệt, hãy sử dụng 2________số 8_______ nguồn. Chỉ định số lần quay. kChỉ định một giá trị số nguyên cho đối số thứ hai 6 xoay mảng 90 độ ngược chiều kim đồng hồ 6 lần
nguồn. Trong trường hợp giá trị âm, hướng quay theo chiều kim đồng hồ
nguồn. Đối với mảng một chiềuMảng một chiều không xoay được
nguồn. Nó có thể được xoay nếu được định nghĩa là một mảng hai chiều chỉ có một hàng
nguồn. Liên kết được tài trợ Đối với mảng nhiều chiềuCác mảng đa chiều có ba chiều trở lên cũng có thể được xoay hành vi mặc địnhTheo mặc định, nó được xoay như sau
nguồn. Nó được quay trong một mặt phẳng bao gồm hai trục (kích thước) đầu tiên
nguồn. Chỉ định mặt phẳng để xoay. trụcĐối với mảng nhiều chiều, đối số thứ ba 7 có thể chỉ định một mặt phẳng để xoay. Trong 7, chỉ định hai trục tạo thành một mặt phẳng với một bộ hoặc danh sách có hai phần tửGiá trị mặc định là 7, quay trong mặt phẳng của hai trục đầu tiên. Có thể khẳng định rằng kết quả giống như ví dụ trên
nguồn. Một ví dụ về quay trong một mặt phẳng khác như sau. Nếu thứ tự của các trục được chỉ định trong 7 bị đảo ngược, hướng quay sẽ bị đảo ngược 0nguồn. Nó cũng có thể được chỉ định cùng với đối số thứ hai 6 1nguồn. Xoay hình ảnhCác tệp hình ảnh có thể được đọc dưới dạng mảng NumPy 4 bằng các thư viện như Gối (PIL) và OpenCV
Có thể xoay hình ảnh bằng cách sử dụng 3. Ví dụ sau sử dụng ảnh màu (mảng ba chiều) nhưng ảnh xám (mảng hai chiều) cũng không cần chỉ định đối số nào |