เขียนฟังก์ชัน (เช่นplaceAt) ที่ใช้อาร์เรย์ของจำนวนเต็มไม่เป็นลบและดัชนีที่เป็นจำนวนเต็มลบ ควรวาง 1 ที่ดัชนีที่กำหนดอาจเปลี่ยนรายการอื่น ๆ โดยจุดเดียวเพื่อย้ายจุดนั้นโดยที่ 0 ยืนสำหรับจุดที่ว่างเปล่า
- หากรายการที่ดัชนีที่ต้องการคือ 0 ให้เติมด้วย 1
- มิฉะนั้นให้ค้นหา 0 ที่ใกล้ที่สุดทางด้านซ้ายของดัชนี เลื่อนรายการหนึ่งจุดที่เหลือลงใน 0 เพื่อทำให้มีที่ว่างจากนั้นเติมดัชนีด้วย 1
- หากไม่มี 0 ทางด้านซ้ายให้ทำสิ่งเดียวกันต่อไป
- หากไม่สามารถทำได้ (เช่นถ้าไม่มี 0) ให้ส่งคืนอาร์เรย์ที่ไม่เปลี่ยนแปลง
รายการมีการจัดทำดัชนี 0 ชื่อฟังก์ชั่นสามารถเป็นอะไรก็ได้ที่คุณต้องการ
ตัวอย่าง:
(ตัวอักษรหมายถึงค่าจำนวนเต็มบวกใด ๆ )
[a, b, 0, c, d, 0] placeAt 2 // output [a, b, 1, c, d, 0] place 2 is 0, just fill
[a, b, 0, c, d, 0] placeAt 3 // output [a, b, c, 1, d, 0] place 3 is filled, shift items left
[a, b, 0, c, d, 0] placeAt 0 // output [1, a, b, c, d, 0] place 0 is filled, can't shift left, shift items right
[a, b, 0, c, d, 0] placeAt 1 // output [a, 1, b, c, d, 0] place 1 is filled, can't shift left, shift items right
[0, a, b, 0, c, d, 0] placeAt 2 // output [a, b, 1, 0, c, d, 0] place 2 is filled, shift items left
[0, a, b, 0, c, d, 0] placeAt 4 // output [0, a, b, c, 1, d, 0] place 4 is filled, shift items left (notice you keep shifting up until a 0)
[0, 2, 0, 2] placeAt 3 // output [0, 2, 2, 1] place 3 is filled, shift items left
นี่คือความท้าทายของรหัสกอล์ฟ ผลงานที่สั้นที่สุดในตอนท้ายของ 9 วันชนะ
[0, 2, 0, 2] placeAt 3, มันถูกกฎหมาย[2, 0, 2, 1]หรือไม่? จำเป็นต้องใช้รหัสในการเรียกใช้ฟังก์ชันจริงplaceAtหรือไม่ โปรดทราบว่าบางภาษาไม่มีฟังก์ชั่นแน่นอน "โยนข้อยกเว้น" อาจไม่มีผลกับบางภาษา ฉันขอแนะนำให้อนุญาตให้แสดงผลลัพธ์ข้อผิดพลาด
[2, 0, 2, 1]ไม่ได้เป็นผลลัพธ์ทางกฎหมายตามที่คุณควรเปลี่ยนองค์ประกอบน้อยที่สุดเท่าที่จะทำได้และคุณสามารถตั้งชื่อฟังก์ชั่นสิ่งที่คุณต้องการ

0?