ด้วยอาร์เรย์ของจำนวนเต็มที่ไม่เป็นลบงานของคุณคือการเก็บองค์ประกอบบางอย่างเท่านั้นตามที่อธิบายไว้ด้านล่าง
[1, 3, 2, 4, 11, 5, 2, 0, 13, 10, 1]
สมมติว่าอาร์เรย์คือก่อนรับองค์ประกอบแรกของอาร์เรย์,
n
. เก็บn
องค์ประกอบแรกและทิ้งองค์ประกอบถัดไป (ทิ้งองค์ประกอบที่n+1
th)[1, 2, 4, 11, 5, 2, 0, 13, 10, 1]
อาร์เรย์ใหม่คือจากนั้นคุณคว้าองค์ประกอบตามที่ลบออกและทำสิ่งเดียวกัน นำกระบวนการไปใช้ใหม่
[1, 2, 11, 5, 2, 0, 13, 10, 1]
คุณทำซ้ำกระบวนการจนกว่าคุณจะมาถึงนอกขอบเขตของอาเรย์ / ไม่มีองค์ประกอบที่เหลือในอาเรย์ เราหยุดเพราะ
11
สูงกว่าความยาวของอาร์เรย์ตอนนี้คุณควรส่งออกผลลัพธ์
อินพุต / เอาต์พุตอาจถูกถ่าย / จัดให้ในรูปแบบมาตรฐานใด ๆ อาร์เรย์จะไม่ว่างเปล่าและจะมีเฉพาะจำนวนเต็มที่ไม่เป็นลบ ช่องโหว่มาตรฐานทั้งหมดถูกห้าม
นี่คือโค้ดกอล์ฟเพื่อให้โค้ดที่สั้นที่สุดเป็นไบต์ชนะ!
กรณีทดสอบ
อินพุต -> เอาท์พุท [1, 2, 3, 4, 5] -> [1, 3, 4] [6, 1, 0, 5, 6] -> [6, 1, 0, 5, 6] [1, 3, 2, 4, 11, 5, 2, 0, 13, 10, 1] -> [1, 2, 11, 5, 2, 0, 13, 10, 1] [2, 2, 2, 2, 2, 2] -> [2, 2] [1, 2, 3, 1, 2, 3, 1, 2, 3] -> [1, 2] [3, 1, 2, 4, 0] -> [] *
* กรณีทดสอบสุดท้ายเกี่ยวข้องกับ0
ดังนั้นฉันตัดสินใจที่จะโพสต์กระบวนการดังกล่าวว่ามีความชัดเจน:
[3, 1, 2, 4, 0] --> [3, 1, 2, 0] --> [1, 2, 0] --> [1, 0] --> [0] --> [] )
2
เอาออกในขั้นตอนแรกแทน3
?
[1, 2, 3, 1, 2, 3, 1, 2, 3]
n
คุณจะเริ่มต้นจากจุดเริ่มต้นของอาร์เรย์เพื่อเก็บn
องค์ประกอบเสมอ ไม่ใช่ (อย่างที่ฉันคิดเมื่อมองแวบแรก) ให้n
องค์ประกอบที่องค์ประกอบแรกที่n
คุณกำลังประเมินอยู่?