Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ไม่มีองค์ประกอบคู่และคี่จากอาร์เรย์ที่กำหนดใน C++


คำชี้แจงปัญหา

ให้อาร์เรย์จำนวนเต็มสองตัวคู่ [] และคี่ [] ซึ่งมีองค์ประกอบคู่และคี่ที่ต่อเนื่องกันตามลำดับโดยองค์ประกอบหนึ่งขาดหายไปจากแต่ละอาร์เรย์ ภารกิจคือการค้นหาองค์ประกอบที่ขาดหายไป

ตัวอย่าง

ถ้าคู่[] ={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