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

การเพิ่มองค์ประกอบให้สูงสุดด้วย a[i+1]> a[i] ใน C++


คำชี้แจงปัญหา

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

ตัวอย่าง

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

{300, 400, 300, 400} ในวิธีแก้ปัญหานี้ เราได้ 2 ดัชนีที่มีเงื่อนไข 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