คำอธิบายปัญหา
สมมติว่าเรามีอาร์เรย์ A n องค์ประกอบ มีร้านขายอุปกรณ์อิเล็กทรอนิกส์ ถูกขโมยคืนที่แล้ว คีย์บอร์ดทั้งหมดในร้านมีเลขลำดับเรียงจากจำนวนเต็ม x เช่น x=4 มี 3 ตัว เลขคือ 4,5,6 ถ้า x=10 มี 7 ตัว เลขคือ 10..16 หลังถูกขโมยเหลือ n ตัว มีเลขในอาร์เรย์ A ต้องการหาจำนวนคีย์บอร์ดที่ถูกขโมยน้อยที่สุด
ตัวอย่าง: A = [10, 13, 12, 8] ผลลัพธ์คือ 2 เพราะถ้า x=8 คีย์บอร์ดที่หายคือ 9 และ 11
ขั้นตอนการแก้ปัญหา
เรียงลำดับ A n := ขนาดของ A คืนค่า A[n-1] - A[0] + 1 - n
ตัวอย่างโค้ด C++
#include <bits/stdc++.h>
using namespace std;
int solve(vector<int> A) {
sort(A.begin(), A.end());
int n = A.size();
return A[n - 1] - A[0] + 1 - n;
}
int main() {
vector<int> A = { 10, 13, 12, 8 };
cout << solve(A) << endl;
}
อินพุต
{ 10, 13, 12, 8 }
เอาต์พุต
2