ปานกลาง 0 ข้อที่แก้แล้ว อัตราผ่าน 0%

Smallest Missing Coin Sum

Find the first positive amount that cannot be made from the available coins.

สิ่งที่คุณจะได้เรียนรู้

  • Sort coins and track reachable sums
  • Find the first gap in what you can pay
  • Prove why the greedy rule works

โจทย์

ดูฉบับแปล

You may select any subset of the supplied coins. Each individual coin may be used at most once, even when multiple coins share a value. Find the smallest positive integer amount that no selection can produce.

Implement missing_coin_sum(coins).

Input

coins: The values of the available coins; duplicates represent separate coins.

Output

Return the smallest positive impossible amount.

เงื่อนไข

1 ≤ number of coins ≤ 200,000. Each value is between 1 and 1,000,000,000.

ตัวอย่าง

ตัวอย่างที่ 1
อินพุต:
coins = [1, 1, 4]

ผลลัพธ์ที่คาดหวัง:
expected = 3
อินพุต:
std::vector<long long> coins = {1, 1, 4};

ผลลัพธ์ที่คาดหวัง:
long long expected = 3;
อินพุต:
long[] coins = new long[] {1, 1, 4};

ผลลัพธ์ที่คาดหวัง:
long expected = 3;

คำอธิบาย

Amounts 1 and 2 use the one-valued coins. No available subset totals 3.

ตัวอย่างที่ 2
อินพุต:
coins = [2, 3]

ผลลัพธ์ที่คาดหวัง:
expected = 1
อินพุต:
std::vector<long long> coins = {2, 3};

ผลลัพธ์ที่คาดหวัง:
long long expected = 1;
อินพุต:
long[] coins = new long[] {2, 3};

ผลลัพธ์ที่คาดหวัง:
long expected = 1;

คำอธิบาย

There is no way to make 1 because every coin is worth at least 2.

แนวทางการแก้

ลองทำเองก่อน แล้วค่อยเปิดคำใบ้ทีละข้อ

คำใบ้ 1

Sort the coins and build the smallest reachable sum from smallest upward.

คำใบ้ 2

If the next coin is larger than the first unreachable amount, that amount can never be formed.

คำใบ้ 3

Duplicates help only when they extend the currently reachable range without gaps.

ความซับซ้อนที่คาดหวัง

O(n log n) time, O(1) extra space, excluding sorting implementation details

แหล่งอ้างอิง

โจทย์นี้ปรับให้เหมาะกับ CodeUtility กรุณาทำตามคำชี้แจงและข้อจำกัดด้านบน

เรียนรู้จากคนอื่น

แนวทางจากชุมชน

ยังไม่มีวิธีทำที่เผยแพร่ ลองแก้โจทย์นี้เพื่อแชร์วิธีแรก