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

เพิ่มจำนวน Index ที่ a[i+1] > a[i] ใน C++


โจทย์

ได้รับอาร์เรย์ N จำนวนเต็ม จัดเรียงใหม่องค์ประกอบอาร์เรย์ เพื่อให้องค์ประกอบถัดไปมากกว่าองค์ประกอบก่อนหน้า arr[i+1] > arr[i]

ตัวอย่าง

ถ้าอินพุตอาร์เรย์คือ {300, 400, 400, 300} อาร์เรย์ที่จัดเรียงใหม่จะเป็น

{300, 400, 300, 400} ในคำตอบนี้ เราได้ 2 Index ที่ตรงเงื่อนไข arr[i+1] > arr[i] ดังนั้นคำตอบคือ 2

อัลกอริทึม

  • ถ้าองค์ประกอบทั้งหมดไม่ซ้ำกัน คำตอบคือ n-1 โดยตรง (n คือจำนวนองค์ประกอบ)
  • ถ้ามีองค์ประกอบซ้ำ คำตอบคือ n - maxFrequency

ตัวอย่างโค้ด

#include <bits/stdc++.h>
#define MAX 1000
using namespace std;

int getMaxIndices(int* arr, int n) {
    int count[MAX] = {0};
    for (int i = 0; i < n; ++i) {
        count[arr[i]]++;
    }
    int maxFrequency = 0;
    for (int i = 0; i < n; ++i) {
        if (count[arr[i]] > maxFrequency) {
            maxFrequency = count[arr[i]];
        }
    }
    return n - maxFrequency;
}

int main() {
    int arr[] = {300, 400, 300, 400};
    int n = sizeof(arr) / sizeof(arr[0]);
    cout << "Answer = " << getMaxIndices(arr, n) << endl;
    return 0;
}

ผลลัพธ์

Answer = 2