บทนำ:
แรงบันดาลใจจากทั้งสองคำถาม SO (ข้อสงสัยจากชั้นเรียนเดียวกันไม่): พิมพ์องค์ประกอบใน subarray ของจำนวนเงินสูงสุดโดยไม่องค์ประกอบที่อยู่ติดกันชวาและผลรวมสูงสุดขององค์ประกอบที่ไม่อยู่ติดกันของอาร์เรย์ที่จะพิมพ์
ท้าทาย:
รับรายการจำนวนเต็มเอาต์พุตอนุกรมที่ประกอบด้วยองค์ประกอบที่ไม่อยู่ติดกันซึ่งมีผลรวมสูงสุด นี่คือตัวอย่าง:
[1,2,3,-1,-3,2,5]
จะส่งผลให้[1,3,5]
(กับผลรวมของ9
)[0,2,6]
ที่ดัชนี[4,5,4,3]
จะส่งผลอย่างใดอย่างหนึ่ง[4,4]
(ที่มีผลรวมของ8
) ที่ดัชนี 0-based[0,2]
หรือ[5,3]
(ยังมีผลรวมของ8
)[1,3]
ที่ดัชนี[5,5,10,100,10,5]
จะส่งผลให้[5,100,5]
(ที่มีผลรวมของ110
) ที่ทั้งดัชนี 0-based หรือ[0,3,5]
[1,3,5]
สิ่งที่สำคัญที่สุดเกี่ยวกับตัวอย่างเหล่านี้ข้างต้นดัชนีที่มีองค์ประกอบอย่างน้อย 2 แยกจากกัน ถ้าเราดูตัวอย่าง[5,5,10,100,10,5]
ในเชิงลึกมากขึ้น: เรามีการเรียงลำดับที่มีศักยภาพต่อไปนี้ที่มีรายการที่ไม่ติดกัน พร้อมดัชนีด้านล่าง ด้วยผลรวมของพวกเขาด้านล่างว่า:
[[5],[10],[100],[10],[5],[5],[100,5],[10,5],[10,10],[5,5],[5,10],[5,100],[5,5],[5,10],[5,100],[5,10],[5,100,5],[5,100,5],[5,10,5],[5,10,10]] // non-adjacent subsequences
[[5],[ 4],[ 3],[ 2],[1],[0],[ 3,5],[ 2,5],[ 2, 4],[1,5],[1, 4],[1, 3],[0,5],[0, 4],[0, 3],[0, 2],[1, 3,5],[0, 3,5],[0, 2,5],[0, 2, 4]] // at these 0-based indices
[ 5, 10, 100, 10, 5, 5, 105, 15, 20, 10, 15, 105, 10, 15, 105, 15, 110, 110, 20, 25] // with these sums
^ ^ // and these two maximums
เนื่องจากผลรวมสูงสุดคือ110
เราจึงแสดงผลลัพธ์ออก[5,100,5]
มา
กฏท้าทาย:
- คุณได้รับอนุญาตให้ส่งออกคู่ค่าคีย์ของดัชนี + ค่า ดังนั้นแทนที่จะเป็น
[5,100,5]
เอาท์พุท[[0,5],[3,100],[5,5]]
หรือ[[1,5],[3,100],[5,5]]
ผลลัพธ์ (หรือ[[1,5],[4,100],[6,5]]
/[[2,5],[4,100],[6,5]]
เมื่อใช้การจัดทำดัชนีแบบ 1 รายการแทนการใช้แบบอิง 0)- หากคุณใช้คู่คีย์ - ค่าพวกเขาสามารถอยู่ในลำดับย้อนกลับหรือแบบสุ่มเนื่องจากมันชัดเจนว่าค่าใดที่มีความหมายเนื่องจากดัชนีที่จับคู่
- ไม่อนุญาตให้แสดงเฉพาะดัชนีที่ไม่มีค่า ควรส่งออกค่าหรือค่า / ดัชนีเป็นคู่ของคีย์ - ค่า (หรือสองรายการที่แยกกันสำหรับ 'คีย์' และ 'ค่า' ที่มีขนาดเท่ากันหากไม่สามารถใช้คู่ของคีย์ - ค่าในภาษาที่คุณเลือก)
- คุณได้รับอนุญาตให้ส่งออกลำดับที่เป็นไปได้ทั้งหมดด้วยผลรวมสูงสุดแทนที่จะเป็นเพียงหนึ่ง
- ดังที่คุณเห็นจากตัวอย่างรายการอินพุตสามารถมีค่าลบและค่าซ้ำเช่นกัน คุณสามารถถือว่าอินจำนวนเต็มอยู่ในช่วง[-999999]
- รายการส่งออกต้องไม่ว่างเปล่าและจะต้องมีองค์ประกอบอย่างน้อยหนึ่งองค์ประกอบเสมอ (หากรายการจะมีค่าลบเท่านั้นรายการที่มีค่าลบต่ำสุดเดียวจะได้ผลลัพธ์เป็นผลลัพธ์ - ดูกรณีทดสอบสองรายการสุดท้าย)
- หากมีหนึ่งเอาต์พุตที่เป็นไปได้ แต่สำหรับดัชนีที่แตกต่างกันหลายรายการจะได้รับอนุญาตให้ส่งออกทั้งคู่แม้ว่าพวกเขาจะดูซ้ำกัน (เช่นตัวอย่างด้านบนอาจแสดงผล
[[5,100,5],[5,100,5]]
สำหรับทั้งชุดค่าผสมที่เป็นไปได้)
กรณีทดสอบ:
Input: Possible outputs: At 0-based indices: With sum:
[1,2,3,-1,-3,2,5] [1,3,5] [0,2,6] 9
[4,5,4,3] [4,4]/[5,3] [0,2]/[1,3] 8
[5,5,10,100,10,5] [5,100,5] [0,3,5]/[1,3,5] 110
[10] [10] [0] 10
[1,1,1] [1,1] [0,2] 2
[-3,7,4,-2,4] [7,4] [1,4] 11
[1,7,4,-2] [7] [1] 7
[1,2,-3,-4,5,6,-7] [2,6] [1,5] 8
[800,-31,0,0,421,726] [800,726]/[800,0,726] [0,5]/[0,3,5]/[0,2,5] 1526
[-1,7,8,-5,40,40] [8,40] [2,4]/[2,5] 48
[-5,-18,-3,-1,-10] [-1] [3] -1
[0,-3,-41,0,-99,-2,0] [0]/[0,0]/[0,0,0] [0]/[3]/[6]/[0,3]/
[0,6],[3,6]/[0,3,6] 0
powerset
ชุดย่อยไม่ได้หรือไม่ แต่ดูเหมือนว่าคุณจะส่งคืนชุดลำดับหรือไม่? [4,5,4,3] จะส่งผลให้ [4,4]โดยที่ [4,4] ไม่ชัดเจน
[5,100,5]
สองครั้งสำหรับตัวอย่างที่สามของคุณ