কম্পিউটার টিউটোরিয়াল

C++-এ সর্টেড অ্যারেতে সবচেয়ে কাছাকাছি সংখ্যা (Closest Number) খুঁজে বের করা


n উপাদানের একটি সর্টেড অ্যারে A দেওয়া আছে। একটি পূর্ণসংখ্যা (target) দেওয়া আছে, তার সাথে সবচেয়ে কাছাকাছি মান বের করতে হবে। অ্যারেতে ডুপ্লিকেট (duplicate) মান এবং নেগেটিভ সংখ্যা থাকতে পারে। উদাহরণস্বরূপ, অ্যারে [2, 5, 6, 7, 8, 8, 9] এবং টার্গেট ৪ হলে সবচেয়ে কাছাকাছি এলিমেন্ট ৫।

এটি সমাধানের জন্য অ্যারে ট্রাভার্স করে কারেন্ট এলিমেন্টের টার্গেটের সাথে निरপেক্ষ পার্থক্য (absolute difference) ট্র্যাক করতে হবে। অবশেষে যেই এলিমেন্টের ন্যূনতম निरপেক্ষ পার্থক্য, সেটি রিটার্ন করব।

উদাহরণ

#include<iostream> #include<list> using namespace std; int getNearest(int x, int y, int target) {    if (target - x >= y - target)       return y;    else       return x; } int getNearestElement(int arr[], int n, int target) {    if (target <= arr[0])       return arr[0];    if (target >= arr[n - 1])       return arr[n - 1];    int left = 0, right = n, mid = 0;    while (left < right) {       mid = (left + right) / 2;       if (arr[mid] == target)          return arr[mid];       if (target < arr[mid]) {          if (mid > 0 && target > arr[mid - 1])             return getNearest(arr[mid - 1], arr[mid], target);             right = mid;       } else {          if (mid < n - 1 && target < arr[mid + 1])             return getNearest(arr[mid], arr[mid + 1], target);          left = mid + 1;       }    }    return arr[mid]; } int main() {    int arr[] = { 2, 5, 6, 7, 8, 8, 9 };    int n = sizeof(arr) / sizeof(arr[0]);    int target = 4;    cout << "Nearest element of " << target << " is: " << getNearestElement(arr, n, target); }

আউটপুট

Nearest element of 4 is: 5

  1. সি++ প্রোগ্রাম: অনসর্টেড অ্যারেতে kটি নিকটতম সংখ্যা খুঁজে বের করা

  2. সি++ প্রোগ্রাম: অ্যারেতে প্রতিটি উপাদানের জন্য সবচেয়ে নিকটবর্তী বড় মান (Closest Greater Value) খুঁজে বের করা

  3. সি++ প্রোগ্রাম: অ্যারেতে প্রতিটি উপাদানের জন্য সবচেয়ে নিকটবর্তী বড় মান (Closest Greater Value) খুঁজে বের করা

  4. C++ ব্যবহার করে অ্যারেতে একটি সংখ্যার ফ্রিকোয়েন্সি বের করা