บทนำ
สมมติว่าคุณต้องการคำนวณส่วนท้ายสูงสุดของรายการตัวเลขนั่นคือจำนวนสูงสุดของคำต่อท้ายที่ไม่ใช่ข้อยกเว้นแต่ละอัน วิธีหนึ่งในการทำเช่นนี้คือการเลือกหมายเลขหนึ่งซ้ำแล้วแทนที่ด้วยจำนวนที่สูงกว่าที่เกิดขึ้นหลังจากนั้นจนกว่าจะไม่สามารถทำได้อีกต่อไป ในการท้าทายนี้งานของคุณคือดำเนินการหนึ่งขั้นตอนของอัลกอริทึมนี้
งาน
ข้อมูลที่คุณป้อนเป็นรายการจำนวนเต็มLซึ่งอาจว่างเปล่า ส่งออกของคุณจะเป็นรายการLที่ว่าจำนวนหนึ่งL ฉันได้รับการแทนที่ด้วยอีกL Jที่L ฉัน <L เจและฉัน <J
กล่าวอีกนัยหนึ่งคุณจะแทนที่หนึ่งหมายเลขด้วยตัวเลขที่สูงกว่าที่เกิดขึ้นหลังจากนั้น
คุณสามารถเลือกiและjได้อย่างอิสระในทุกคู่ที่ถูกต้องและตัวเลือกสามารถเป็นแบบไม่ระบุชื่อได้
หากiและjดังกล่าวไม่มีอยู่ (เช่นLไม่เพิ่มขึ้น) เอาต์พุตของคุณจะไม่เปลี่ยนแปลงL
ตัวอย่าง
พิจารณาการป้อนข้อมูลL = [3, 1, 4, -1, 2] การดำเนินงานที่เป็นไปได้ที่จะมาแทนที่3จาก4แทนที่1จาก4แทนที่1จาก2หรือเปลี่ยน-1โดย2 ดังนั้นผลลัพธ์ที่เป็นไปได้คือ:
[ 3 , 1 , 4 , -1 , 2 ]
------------------------------
[( 4), 1 ,( 4), -1 , 2 ]
[ 3 ,( 4),( 4), -1 , 2 ]
[ 3 ,( 2), 4 , -1 ,( 2)]
[ 3 , 1 , 4 ,( 2),( 2)]
ถ้าคุณทำซ้ำการดำเนินครั้งพอสิ้นผลจะเป็น[4,4,4,2,2]ซึ่งเป็นรายการได้อย่างแม่นยำสูงสุดหางของL
กฎและการให้คะแนน
คุณสามารถเขียนโปรแกรมเต็มรูปแบบหรือฟังก์ชั่น ในกรณีหลังคุณสามารถปรับเปลี่ยนอินพุตแทนการส่งคืนอาร์เรย์ใหม่หากภาษาของคุณอนุญาต รูปแบบอินพุตและเอาต์พุตมีความยืดหยุ่นภายในเหตุผล
จำนวนไบต์ต่ำสุดชนะ
กรณีทดสอบ
แสดงผลลัพธ์ที่เป็นไปได้ทั้งหมด
[] -> []
[1] -> [1]
[1,2] -> [2,2]
[2,1] -> [2,1]
[4,4,4,4] -> [4,4,4,4]
[-1,-3,-10] -> [-1,-3,-10]
[1,3,10] -> [3,3,10] [10,3,10] [1,10,10]
[1,1,2,1] -> [2,1,2,1] [1,2,2,1]
[998,64,2,-94,-789] -> [998,64,2,-94,-789]
[998,2,64,-94,-789] -> [998,64,64,-94,-789]
[3,1,4,-1,2] -> [4,1,4,-1,2] [3,4,4,-1,2] [3,2,4,-1,2] [3,1,4,2,2]
[-1,4,0,4,7,2,3] -> [4,4,0,4,7,2,3] [0,4,0,4,7,2,3] [-1,4,4,4,7,2,3] [7,4,0,4,7,2,3] [-1,7,0,4,7,2,3] [-1,4,7,4,7,2,3] [-1,4,0,7,7,2,3] [2,4,0,4,7,2,3] [-1,4,2,4,7,2,3] [3,4,0,4,7,2,3] [-1,4,3,4,7,2,3] [-1,4,0,4,7,3,3]
[3542,-12311,7662,1672,6081] -> [7662,-12311,7662,1672,6081] [3542,7662,7662,1672,6081] [3542,1672,7662,1672,6081] [6081,-12311,7662,1672,6081] [3542,6081,7662,1672,6081] [3542,-12311,7662,6081,6081]
x=>x.map(c=>c<x[++i]&!d?x[d=i]:c,d=i=0)
?