อินพุต
บอร์ด: คอนเทนเนอร์ 2D (เมทริกซ์, รายการลิสต์, ฯลฯ ) ของตัวอักษรที่ชอบ:
["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"]
หากคุณเลือกรายการของรายการคุณอาจคิดว่ารายการย่อยทั้งหมดมีความยาวเท่ากัน
กฎระเบียบ
- ในการสร้างสี่เหลี่ยมที่ถูกต้องคุณต้องใช้มุมสี่เหลี่ยมทั้งหมดด้วยตัวอักษรเดียวกัน
- ตัวอย่างดูกระดานตัวอย่างด้วย Xร้อง คุณสามารถดู 'X' บน (1,0) เช่นกันใน (4,0) และ (1,3) และ (4,3) จากนั้นคุณมีรูปสี่เหลี่ยมผืนผ้า [1,0,4,3] ซึ่งหมายความว่าจาก (1,0) ถึง (4,3):
บอร์ดตัวอย่างด้วย 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"]
- เป้าหมายคือการหาสี่เหลี่ยมหรือหนึ่งในสี่เหลี่ยมที่มีพื้นที่ใหญ่ที่สุดซึ่งคำนวณโดย (ซ้ายขวา + 1) * (ล่างสุด + 1)
- หากมีหลายรูปสี่เหลี่ยมผืนผ้าที่มีพื้นที่สูงสุดเท่ากันเอาท์พุทใด ๆ เป็นทางเลือกหนึ่งที่มี (พิกัดสูงสุด, พิกัดซ้าย, พิกัดขวา, พิกัดด้านล่าง) มีขนาดเล็กที่สุดในพจนานุกรม
- สี่เหลี่ยมจะต้องมีขอบขนานกับขอบของบอร์ด
- ตัวอักษรแต่ละตัวเป็นอักขระ ASCII ที่พิมพ์ได้จาก A ถึง Z (รวมอยู่ด้วย)
เอาท์พุต
ผลลัพธ์ควรเป็นตำแหน่งซ้ายและขึ้น - ลงของมุมสี่เหลี่ยมที่ใหญ่ที่สุด สำหรับตัวอย่างแรก "บอร์ด" สี่เหลี่ยมขนาดใหญ่เป็นสีเหลือง:
และคำตอบควรเป็น:
[1, 1, 8, 4]
กรณีทดสอบตัวอย่างที่สอง
อินพุตของ:
["C", "D", "D", "D", "A", "A"],
["B", "D", "C", "D", "A", "A"],
["B", "D", "D", "C", "A", "C"],
["B", "D", "B", "C", "A", "C"]
ควรให้หนึ่งในสามรายการพิกัดที่ระบุพื้นที่หกสี่เหลี่ยม
[1, 0, 2, 2]
[1, 0, 3, 1]
[3, 2, 5, 3]
คำถามนี้ถูกโพสต์ไว้ใน Stack Overflow ด้วยหัวเรื่อง: วิธีค้นหาสี่เหลี่ยมที่ใหญ่ที่สุดในอาร์เรย์ 2D ที่เกิดขึ้นจากมุมที่เหมือนกันสี่มุม และด้วยวิธีการแก้ปัญหา JS หยาบคาย (ฉันสามารถพูดว่า "หยาบคาย" เพราะเป็นรหัสของฉัน;):
ตกลงเป็นโพสต์แรกของฉันได้โปรดอดทนกับฉัน ฉันจะเปลี่ยนสิ่งที่คุณพูดเพื่อปรับปรุงแบบทดสอบ
((left,top),(right,bottom))
ควรทำก็ดี ฉันลบคำตอบและตอบอีกครั้งเมื่อคำถามได้รับการขัดเกลาอย่างสมบูรณ์