แรงบันดาลใจจากเราทำทาวเวอร์กระโดดและเกี่ยวข้องกับ2D Maze Minus 1D
บทนำ
งานของคุณคือการหาเส้นทางที่สั้นที่สุดที่จะออกจากเขาวงกตอาร์เรย์ตามกฎที่ระบุ
ท้าทาย
อาร์เรย์ 1D a ที่มีองค์ประกอบnถือได้ว่าเป็นเขาวงกตที่ประกอบด้วยจุดnซึ่งจุดที่มีดัชนีkเชื่อมต่อกับจุดที่มีk + a [ k ] และk - a [ k ] ในลักษณะทางเดียว ในคำอื่น ๆ คุณสามารถกระโดดไปข้างหน้าหรือข้างหลังตรง[ k ] ก้าวจากจุดที่มีค่าดัชนีk คะแนนที่มีดัชนีนอกขอบเขตของอาร์เรย์จะถูกพิจารณานอกเขาวงกต
เพื่ออธิบายสิ่งนี้ให้พิจารณาอาร์เรย์ต่อไปนี้
[0,8,5,9,4,1,1,1,2,1,2]
หากเราอยู่ที่องค์ประกอบที่ 5 ในขณะนี้เนื่องจากองค์ประกอบคือ 4 เราสามารถข้ามไปข้างหน้าไปยังองค์ประกอบที่ 9 หรือ 4 ขั้นตอนย้อนหลังไปยังองค์ประกอบที่ 1 ได้ ถ้าเราทำอย่างหลังเราจะจบลงด้วยองค์ประกอบ 0 ซึ่งบ่งชี้ว่าไม่มีการเคลื่อนไหวเพิ่มเติม ถ้าเราทำแบบเดิมเนื่องจากองค์ประกอบที่ 9 คือ 2 เราสามารถเลือกที่จะกระโดดไปที่องค์ประกอบที่ 11 ซึ่งเป็นอีก 2 และจากนั้นเราสามารถกระโดดอีกครั้งเพื่อ "องค์ประกอบที่ 13" ซึ่งอยู่นอกขอบเขตของ อาร์เรย์และพิจารณาทางออกให้กับเขาวงกต
ดังนั้นถ้าเราเริ่มต้นจากองค์ประกอบที่อยู่ตรงกลางวิธีหนึ่งที่จะได้รับออกจากเขาวงกตที่มีการกระโดดที่ 1 กลับไปขั้นตอนที่ 4 ขั้นตอนข้างหน้าขั้นตอนที่ 2 ไปข้างหน้าและอีก 2 [-1,4,2,2]
ขั้นตอนข้างหน้าซึ่งสามารถแสดงเป็นอาร์เรย์ หรือคุณสามารถแสดงมันมีอาร์เรย์[4,8,10,12]
ที่บันทึกดัชนี zero-based ของจุดกลางและขั้นสุดท้ายทั้งหมด (ดัชนี 1 ที่ใช้เป็นยังดี) [-1,1,1,1]
หรือเพียงแค่สัญญาณ
การหลบหนีจากเขาวงกตจากจุดสิ้นสุดดัชนีต่ำก็ถือว่าใช้ได้เช่นกัน
การใช้สัญกรณ์แรกและเริ่มต้นจากองค์ประกอบเดียวกัน[1,1,1,2,2]
ก็เป็นวิธีแก้ปัญหาเช่นกัน แต่ก็ไม่เหมาะสมเนื่องจากมี 5 ขั้นตอนแทนที่จะเป็น 4
ภารกิจคือการหาเส้นทางที่สั้นที่สุดเพื่อออกจากเขาวงกตอาร์เรย์และออกเส้นทาง หากมีเส้นทางที่ดีที่สุดมากกว่าหนึ่งเส้นทางคุณสามารถส่งออกเส้นทางใดเส้นทางหนึ่งหรือทั้งหมดได้ หากไม่มีวิธีแก้ปัญหาคุณควรส่งออกค่าที่ผิดพลาดที่คุณเลือกซึ่งมองเห็นได้จากเส้นทางที่ถูกต้อง
เพื่อความง่ายจำนวนขององค์ประกอบในอาเรย์จะเป็นจำนวนคี่เสมอและเรามักจะเริ่มจากองค์ประกอบที่อยู่ตรงกลาง
กรณีทดสอบ
กรณีทดสอบแสดงให้เห็นถึงรูปแบบต่าง ๆ ของการส่งออก แต่คุณไม่ จำกัด เหล่านี้
Input
Output
[0,8,5,9,4,1,1,1,2,1,2]
[-1,4,2,2]
[2,3,7,1,2,0,2,8,9]
[2,9] (or [2,-5] or [[2,9],[2,-5]])
[0,1,2,2,3,4,4,4,3,2,2,3,0]
[1,-1,1,1]
[0,1,2,2,4,4,6,6,6,6,6,4,2,1,2,2,0]
[]
รายละเอียด
คุณสามารถเขียนฟังก์ชั่นหรือโปรแกรมเต็มรูปแบบ
อาร์เรย์มีจำนวนเต็มไม่ใช่ค่าลบเท่านั้น
คุณสามารถนำเข้าและส่งออกผ่านแบบฟอร์มมาตรฐานใด ๆแต่โปรดระบุคำตอบของคุณในแบบฟอร์มที่คุณใช้
นี่คือรหัส - กอล์ฟจำนวนไบต์ต่ำสุดชนะ
ตามปกติช่องโหว่เริ่มต้นจะมีผลที่นี่
[1,1,1,-1]
แทนที่จะ[-1,1,1,1]
?
[0,8,5,9,4,1,1,1,2,1,2]
แสดงผล[[-1,4,2,2]]
)