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

สมาชิกที่มากกว่าทั้งก่อนหน้าและถัดไปในอาร์เรย์ C++


ปัญหา

หาสมาชิกในอาร์เรย์ที่ มากกว่าทั้งสมาชิกก่อนหน้าและสมาชิกถัดไป (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