เราได้รับอาร์เรย์ของจำนวนเต็มและค่าสองค่า start และ end งานคือการนับจำนวนองค์ประกอบที่อยู่ระหว่าง start และ end ในอาร์เรย์ โดยพิจารณาตำแหน่งการปรากฏครั้งแรกของ start และครั้งสุดท้ายของ end
ตัวอย่าง
Input − int arr[] = {1, 2, 3, 4, 5, 6, 7} Start = 1, End = 7 Output − count is 5
คำอธิบาย − ช่วง 1 ถึง 7 มีองค์ประกอบอยู่ระหว่างกัน 5 ตัว (2,3,4,5,6)
Input − int arr[] = {1, 2, 3, 4, 5, 6, 7} Start = 7, End = 9 Output − count is 0
คำอธิบาย − ไม่พบค่า 9 ในอาร์เรย์ จึงนับได้ 0
แนวทางการแก้ปัญหา
- รับอาร์เรย์และค่า start, end
- หาตำแหน่งแรกของ start (ลูปจากหน้าไปหลัง)
- หาตำแหน่งสุดท้ายของ end (ลูปจากหลังมาหน้า)
- คำนวณจำนวนองค์ประกอบระหว่างกัน: j - i - 1
- จัดการกรณีไม่พบค่า หรือตำแหน่งไม่ถูกต้อง
ตัวอย่างโค้ด C++
#include <iostream>
using namespace std;
int countElements(int ar[], int n, int start, int end) {
int i = 0;
for (i = 0; i < n; i++) {
if (ar[i] == start) break;
}
if (i >= n - 1) return 0;
int j;
for (j = n - 1; j >= i + 1; j--) {
if (ar[j] == end) break;
}
if (j == i) return 0;
return (j - i - 1);
}
int main() {
int ar[] = {1, 6, 2, 5, 9, 8, 3, 7, 4};
int n = sizeof(ar) / sizeof(ar[0]);
int start = 5, end = 4;
cout << "count is " << countElements(ar, n, start, end);
return 0;
}
ผลลัพธ์
count is 4
บทความนี้อธิบายวิธีนับจำนวนสมาชิกที่อยู่ระหว่างค่า start และ end ในอาร์เรย์ โดยคำนึงถึงตำแหน่งการปรากฏครั้งแรกและครั้งสุดท้าย