Menu
CoddyTech

Các mẫu thường gặp với mảng 2D

Thuộc phần Logic và luồng chương trình trong hành trình Java của Coddy. Bài học 8 trên 59.

Một số mẫu thường xuất hiện khi làm việc với mảng 2D. Nhận biết những mẫu này có thể giúp bạn giải quyết vấn đề hiệu quả hơn. Sau đây là một vài mẫu phổ biến:

Duyệt theo đường chéo

Truy cập các phần tử có chỉ số hàng bằng chỉ số cột (matrix[i][i]) sẽ cho bạn đường chéo chính. Với đường chéo phụ, tổng chỉ số hàng và chỉ số cột bằng kích thước mảng trừ đi 1 (matrix[i][size - 1 - i]).

Ví dụ:

1  2  3
4  5  6
7  8  9

Duyệt qua đường chéo chính (matrix[i][i]): 1, 5, 9
Duyệt qua đường chéo phụ (matrix[i][size - 1 - i]): 3, 5, 7

Duyệt đường viền

Để duyệt qua các phần tử ở biên, bạn giữ một chỉ số cố định (0 hoặc size - 1) trong khi lặp qua chỉ số còn lại.

Để truy cập đường viền trên cùng, bạn lặp qua các cột và cố định chỉ số hàng ở 0.

Ví dụ:

1  2  3  4
5  6  7  8
9 10 11 12

các phần tử ở biên: 1, 2, 3, 4, 8, 12, 11, 10, 9, 5 (tất cả trừ 6 và 7)

challenge icon

Thử thách

Dễ

Tạo một phương thức (method) có tên printPatterns, nhận đầu vào là một mảng (array) 2D hình vuông gồm các số nguyên (integer) (matrix) và in ra các mẫu sau:

  1. Đường chéo chính: In ra tất cả phần tử có chỉ số hàng bằng chỉ số cột.
  2. Đường chéo phụ: In ra tất cả phần tử có tổng chỉ số hàng và cột bằng kích thước của ma trận trừ 1.
  3. Đường viền: In ra các phần tử ở đường viền trên, dưới, trái và phải của ma trận.

Đầu ra sẽ trông như sau:

Main Diagonal: 1 6 11 16 
Anti-Diagonal: 4 7 10 13 
Top Border: 1 2 3 4 
Bottom Border: 13 14 15 16 
Left Border: 1 5 9 13 
Right Border: 4 8 12 16

Tự làm thử

// Chỉ viết code bên trong lớp. Không viết main() hoặc bất kỳ code nào bên ngoài lớp này.
class PrintPatterns {
    public static void printPatterns(int[][] matrix) {
        // Viết code ở đây.
    }
}
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Logic và luồng chương trình

Tự luyện tập: Trình biên dịch Java online