การค้นหาดัชนีอาร์เรย์ที่มีจำนวนเลขคู่หรือเลขคี่เท่ากันทั้งสองข้าง หมายถึงตำแหน่งที่มีจำนวนเลขคู่หรือเลขคี่ด้านซ้ายและด้านขวาเท่ากัน
นี่คือคำจำกัดความที่เกี่ยวข้องกับแนวคิดนี้:
- อาร์เรย์ (Array) — ตู้เก็บข้อมูลที่มีชนิดข้อมูลเหมือนกัน
- ดัชนีอาร์เรย์ (Array Index) — ตำแหน่งของสมาชิกในอาร์เรย์ เริ่มจาก 0 เสมอ
- เลขคู่ (Even number) — เลขที่หารด้วย 2 ลงตัว
- เลขคี่ (Odd number) — เลขที่หารด้วย 2 ไม่ลงตัว
จำนวนเต็มทุกจำนวนจะเป็นเลขคู่หรือเลขคี่
ตัวอย่างเพื่อให้เข้าใจง่ายขึ้น:
Input: arr[] = {4, 3, 2, 1, 2} Output : 2
คำอธิบาย
ที่ดัชนี 2 มีเลขคี่ 1 ตัวทางด้านซ้าย และเลขคี่ 1 ตัวทางด้านขวา
เรามีอาร์เรย์ของจำนวนเต็ม n ตัว ต้องการหาดัชนีของสมาชิกที่ทำให้:
- จำนวนเลขคู่ทางด้านซ้ายเท่ากับจำนวนเลขคู่ทางด้านขวา หรือ
- จำนวนเลขคี่ทางด้านซ้ายเท่ากับจำนวนเลขคี่ทางด้านขวา
หากไม่มีเงื่อนไขนี้ให้พิมพ์ -1 หากมีให้พิมพ์ดัชนีนั้น
อัลกอริทึม
เพื่อคำนวณดัชนีที่มีจำนวนเลขคู่หรือเลขคี่เท่ากันทั้งสองข้าง เราต้องนับจำนวนสมาชิกทางซ้ายและทางขวาของสมาชิกแต่ละตัว
อาร์เรย์ arr[] ที่มี n สมาชิก
ขั้นตอนที่ 1: สำหรับ i จาก 0 ถึง n-1 ทำขั้นตอน 2-5:
ขั้นตอนที่ 2: กำหนด e_l, o_l, e_r, o_r = 0
ขั้นตอนที่ 3: สำหรับ j จาก 0 ถึง i-1
ขั้นตอนที่ 3.1: นับค่า e_l และ o_l
ขั้นตอนที่ 4: สำหรับ j จาก i+1 ถึง n-1
ขั้นตอนที่ 4.1: นับค่า e_r และ o_r
ขั้นตอนที่ 5: ถ้า (e_l == e_r) หรือ (o_l == o_r) ให้พิมพ์ i
ตัวอย่างโค้ด
#include <iostream>
using namespace std;
int main() {
int arr[] = {4, 3, 2, 1, 2};
int n = 5;
cout << "The array is : ";
for(int i = 0; i < n; i++) {
cout << arr[i] << " ";
}
cout << "\nThe index of the element with the same count of even or odd numbers on both sides = ";
for (int i = 0; i < n; i++) {
int o_l = 0, e_l = 0;
int o_r = 0, e_r = 0;
for (int j = 0; j < i; j++) {
if (arr[j] % 2 == 0)
e_l++;
else
o_l++;
}
for (int k = n - 1; k > i; k--) {
if (arr[k] % 2 == 0)
e_r++;
else
o_r++;
}
if (e_r == e_l || o_r == o_l)
cout << i << endl;
}
return 0;
}
ผลลัพธ์
The array is : 4 3 2 1 2 The index of the element with the same count of even or odd numbers on both sides = 2