Đầu vào
Bảng: Một thùng chứa 2D (ma trận, danh sách các danh sách, v.v.) của các chữ cái như:
["B", "C", "C", "C", "C", "B", "B", "C", "A", "A"],
["B", "A", "C", "B", "B", "A", "B", "B", "A", "A"],
["B", "C", "B", "C", "A", "A", "A", "B", "C", "B"],
["B", "B", "B", "A", "C", "B", "A", "C", "B", "A"],
["A", "A", "A", "C", "A", "C", "C", "B", "A", "C"],
["A", "B", "B", "A", "A", "C", "B", "C", "C", "C"],
["C", "B", "A", "A", "C", "B", "B", "C", "A", "A"]
Nếu bạn chọn một danh sách các danh sách, bạn có thể cho rằng tất cả các danh sách phụ có cùng độ dài.
Quy tắc
- Để tạo một hình chữ nhật hợp lệ, bạn cần tất cả các góc hình chữ nhật có cùng 'chữ'.
- Ví dụ, nhìn bảng mẫu với X dưới đây. Bạn có thể thấy 'X' trên (1,0) cũng trên (4,0) cũng trên (1,3) và trên (4,3) sau đó bạn có trực tràng [1,0,4,3] có nghĩa là từ (1,0) đến (4,3):
Bảng mẫu với X :
["B", "X", "C", "C", "X", "B", "B", "C", "A", "A"],
["B", "A", "C", "B", "B", "A", "B", "B", "A", "A"],
["B", "C", "B", "C", "A", "A", "A", "B", "C", "B"],
["B", "X", "B", "A", "X", "B", "A", "C", "B", "A"],
["A", "A", "A", "C", "A", "C", "C", "B", "A", "C"],
["A", "B", "B", "A", "A", "C", "B", "C", "C", "C"],
["C", "B", "A", "A", "C", "B", "B", "C", "A", "A"]
- Mục tiêu là tìm hình chữ nhật hoặc một trong những hình chữ nhật có diện tích lớn nhất, được tính theo (phải-trái + 1) * (dưới cùng trên cùng + 1)
- Nếu có nhiều hình chữ nhật có cùng diện tích tối đa, hãy xuất bất kỳ hình chữ nhật nào. Tùy chọn một với (tọa độ trên cùng, tọa độ trái, tọa độ phải, tọa độ dưới cùng) nhỏ nhất về mặt từ vựng.
- Hình chữ nhật phải có các cạnh song song với cạnh của bảng.
- Mỗi chữ cái là một ký tự ASCII có thể in từ A đến Z (bao gồm cả hai).
Đầu ra
Đầu ra phải là vị trí bên trái và bên phải của các góc hình chữ nhật có diện tích lớn nhất. Đối với mẫu "bảng" đầu tiên, hình vuông lớn là màu vàng:
Và câu trả lời nên là:
[1, 1, 8, 4]
Một trường hợp thử nghiệm ví dụ thứ hai
Một đầu vào của:
["C", "D", "D", "D", "A", "A"],
["B", "D", "C", "D", "A", "A"],
["B", "D", "D", "C", "A", "C"],
["B", "D", "B", "C", "A", "C"]
Nên mang lại một trong ba danh sách tọa độ xác định một khu vực sáu hình chữ nhật:
[1, 0, 2, 2]
[1, 0, 3, 1]
[3, 2, 5, 3]
Câu hỏi này được đăng trên Stack Overflow với tiêu đề: Làm thế nào để tìm hình chữ nhật lớn nhất trong một mảng 2D được hình thành bởi bốn góc giống nhau? và với giải pháp JS thô lỗ này (tôi có thể nói "thô lỗ" vì là mã của tôi;):
Ok, là bài viết đầu tiên của tôi, hãy khoan dung với tôi. Tôi sẽ thay đổi tất cả những gì bạn nói để cải thiện bài kiểm tra.
((left,top),(right,bottom))
sẽ ổn. Tôi đã xóa câu trả lời của mình và trả lời lại khi câu hỏi được hoàn thiện.