ปัญหา
หาสมาชิกในอาร์เรย์ที่ มากกว่าทั้งสมาชิกก่อนหน้าและสมาชิกถัดไป (Peak Elements)
ตัวอย่าง
arr[] = {3, 2, 5, 7, 3, 4, 5}
Output: 7 (เพราะ 7 > 5 และ 7 > 3)
แนวทางแก้ปัญหา
วนลูป i = 1 ถึง n-2 ตรวจสอบ arr[i] > arr[i-1] && arr[i] > arr[i+1]
โปรแกรมตัวอย่าง
#include <iostream>
using namespace std;
void findPeakElements(int arr[], int n) {
for (int i = 1; i < n - 1; i++)
if (arr[i] > arr[i-1] && arr[i] > arr[i+1])
cout << arr[i] << " ";
}
int main() {
int arr[] = {5, 4, 7, 1, 17, 8, 3};
int n = sizeof(arr) / sizeof(arr[0]);
cout << "Peak elements: ";
findPeakElements(arr, n);
return 0;
}
ผลลัพธ์
Peak elements: 7 17