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 9Duyệ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 12các phần tử ở biên: 1, 2, 3, 4, 8, 12, 11, 10, 9, 5 (tất cả trừ 6 và 7)
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:
- Đường chéo chính: In ra tất cả phần tử có chỉ số hàng bằng chỉ số cột.
- Đườ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.
- Đườ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 16Tự 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.
}
}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
1Mảng đa chiều
Kiến thức cơ bản về mảng 2DTruy cập phần tử trong mảng 2DVòng lặp lồng nhau với mảng 2DÔn tập về mảng 2DPhép cộng và phép trừ ma trậnMảng không đềuMảng 3D trở lênCác mẫu thường gặp với mảng 2DÔn tập về mảng2HashMap phần 1
HashMap là gì?Khai báo HashMapTruy cập giá trịKiểm tra khóa có tồn tạiChỉnh sửa từ điểnÔn tập: HashMapTự luyện tập: Trình biên dịch Java online