คำชี้แจงปัญหา
ให้อาร์เรย์จำนวนเต็มสองตัวคู่ [] และคี่ [] ซึ่งมีองค์ประกอบคู่และคี่ที่ต่อเนื่องกันตามลำดับโดยองค์ประกอบหนึ่งขาดหายไปจากแต่ละอาร์เรย์ ภารกิจคือการค้นหาองค์ประกอบที่ขาดหายไป
ตัวอย่าง
ถ้าคู่[] ={10, 8, 6, 16, 12} andodd[] ={3, 9, 13, 7, 11} ดังนั้นจำนวนที่หายไปจากอาร์เรย์คู่คือ 14 และจากอาร์เรย์คี่คือ 5ก่อน>อัลกอริทึม
- จัดเก็บองค์ประกอบคู่ต่ำสุดและสูงสุดจากอาร์เรย์คู่ [] ในตัวแปร minEven และ maxEven
- ผลรวมของเลขคู่ N ตัวแรกคือ N * (N + 1) คำนวณผลรวมของเลขคู่ตั้งแต่ 2 ถึง minEven พูด sum1 และผลรวมของเลขคู่ตั้งแต่ 2 ถึง maxEven พูด sum2
- ผลรวมของอาร์เรย์คู่ที่ต้องการจะเป็น reqSum =sum2 – sum1 + minEven การลบผลรวมอาร์เรย์คู่จาก reqSum นี้จะให้จำนวนคู่ที่ขาดหายไป
- ในทำนองเดียวกัน ยังสามารถหาเลขคี่ที่หายไปได้ เนื่องจากเรารู้ว่าผลรวมของเลขคี่ N ตัวแรกคือ N2
ตัวอย่าง
#includeใช้เนมสเปซ std;void findMissingNums(int แม้กระทั่ง[], int sizeEven, int odd[], int sizeOdd) { int minEven =INT_MAX; int maxEven =INT_MIN; int minOdd =INT_MAX; int maxOdd =INT_MIN; int sumEvenArr =0, sumOddArr =0; สำหรับ (int i =0; i เมื่อคุณคอมไพล์และรันโปรแกรมข้างต้น มันสร้างผลลัพธ์ต่อไปนี้ -
ผลลัพธ์
ไม่มีเลขคู่ =14ไม่มีเลขคี่ =5