แรงบันดาลใจจากคำถามนี้และกลั่นโดยหลุยส์ Mendo
ท้าทาย
เมื่อพิจารณาจากเมทริกซ์จำนวนเต็มสองมิติแต่ละแถวจะมีค่าสูงสุด องค์ประกอบอย่างน้อยหนึ่งองค์ประกอบของแต่ละแถวจะเท่ากับค่าสูงสุดของแถวที่เกี่ยวข้อง เป้าหมายของคุณคือพิจารณาว่าคอลัมน์ใดมีรายการมากที่สุดซึ่งเท่ากับมูลค่าสูงสุดของแถวนั้น ๆ รวมถึงจำนวนสูงสุดของแถวอัจฉริยะที่พบในคอลัมน์เหล่านี้
อินพุต
- อินพุตจะเป็นเมทริกซ์
M
x ว่างเปล่าN
(M
> 0 และN
> 0) ในรูปแบบใดก็ตามที่เหมาะสมกับภาษาที่คุณเลือก
เอาท์พุต
- โปรแกรมของคุณควรกลับดัชนีของแต่ละคอลัมน์ที่มีจำนวนสูงสุดของแถวที่ฉลาดที่สุด (ไม่ว่าจะเป็นค่าที่แยกจากกันหรือรายการ) สามารถใช้ดัชนีแบบอิงดัชนี 0- หรือ 1 ก็ได้ (ระบุในคำอธิบายของคุณ)
- โปรแกรมของคุณควรคืนค่าจำนวนสูงสุดที่ปรากฏในคอลัมน์เหล่านี้ (ตัวเลขเดียว)
- คำสั่ง / รูปแบบของผลลัพธ์มีความยืดหยุ่น แต่ควรอธิบายไว้ในข้อความที่มาพร้อมกับคำตอบของคุณ
ข้อมูลเพิ่มเติม
- รายการทั้งหมดในเมทริกซ์การป้อนข้อมูลจะเป็นจำนวนเต็มบวก
- หากค่าสูงสุดของแถวถูกแชร์โดยองค์ประกอบหลายอย่างในแถวนั้นการเกิดขึ้นทั้งหมดของค่านั้นจะนับรวมไปยังผลรวมของคอลัมน์
- หากหลายคอลัมน์มีจำนวน maxima เท่ากันคุณควรส่งคืนรายการของคอลัมน์ทั้งหมดที่มี maxima จำนวนนี้
ตัวอย่าง
พิจารณาการป้อนข้อมูล
7 93
69 35
77 30
แถวที่ 1 มี maxium 93 ซึ่งเกิดขึ้นเพียงครั้งเดียวคือที่คอลัมน์ 2 แถวที่ 2: เกิดขึ้นที่คอลัมน์ 1 แถวที่ 3: ที่คอลัมน์ 1 ดังนั้นคอลัมน์ผู้ชนะคือ 1 ด้วย 2 สูงสุด [1] [2]
ดังนั้นการส่งออกจะได้รับ ถ้าเราเปลี่ยนอินพุตเป็น
7 93
69 35
77 77
ผลลัพธ์จะเป็น[1 2] [2]
เพราะทั้งสองคอลัมน์มี 2 maxima
กรณีทดสอบ
input => output ( [1-based index array], [nMaxima] )
----------------------------------------------
7 93
69 35 => [1], [2]
77 30
7 93
69 35 => [1 2], [2]
77 77
1 2 3 4 => [4], [2]
5 6 7 8
16 2 3 13
5 11 10 8 => [1 2 4], [1]
9 7 6 12
1 1 1 1 => [1 2 3 4], [1]
25 6 13 25 => [1 4], [1]
1
2
3 => [1], [4]
4
100 => [1], [1]
เกณฑ์การให้คะแนน
นี่คือโค้ดกอล์ฟซึ่งเป็นรหัสที่สั้นที่สุดในหน่วยไบต์ Tiebreaker ไปที่คำตอบก่อนหน้า
ลีดเดอร์บอร์ด
ด้านล่างเป็นตัวอย่างสแต็กสำหรับการวิเคราะห์รายการทั้งหมด