সমস্যা বিবরণ
একটি আনসর্টেড অ্যারে দেওয়া আছে। আমাদের কাজ হল অ্যারেতে তিনটি সবচেয়ে বড় উপাদান বের করা।
উদাহরণ
ইনপুট: arr[] = {7, 3, 9, 12, 1}
আউটপুট: 12, 9, 7
পদ্ধতি ১: একই পাসে তিনটি ভ্যারিয়েবল (O(n))
max, max2, max3 ভ্যারিয়েবল রেখে একবার ট্রাভার্সাল।
#include <iostream>
using namespace std;
void findThreeLargest(int arr[], int n) {
int max=arr[0], max2=arr[0], max3=arr[0];
for(int i=1;imax){ max3=max2; max2=max; max=arr[i]; }
else if(arr[i]>max2){ max3=max2; max2=arr[i]; }
else if(arr[i]>max3) max3=arr[i];
}
cout << max << ", " << max2 << ", " << max3;
}
পদ্ধতি ২: সর্টিং (O(n log n))
অ্যারে সর্ট করে শেষ তিনটি উপাদান নেওয়া।
#include <bits/stdc++.h>
using namespace std;
void findThreeLargest(int arr[], int n) {
sort(arr, arr+n, greater<>());
cout << arr[0] << " " << arr[1] << " " << arr[2];
}
আউটপুট (উভয় পদ্ধতির জন্য)
Three largest: 86, 53, 50