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

C++ দিয়ে 1 থেকে n-1 রেঞ্জে একমাত্র রিপিটিং এলিমেন্ট বের করা


এই সমস্যাতে, আমাদের একটি অনঅর্ডার্ড অ্যারে arr[] দেওয়া আছে যার সাইজ N এবং এতে 1 থেকে N-1 পর্যন্ত মান আছে, কিন্তু একটি মান দুবার আছে। আমাদের কাজ হল 1 থেকে n-1 রেঞ্জে একমাত্র রিপিটিং এলিমেন্ট বের করা।

উদাহরণ দেখি:

ইনপুট

arr[] = {3, 5, 4, 1, 2, 1}

আউটপুট

1

সমাধানের পদ্ধতি

এই সমস্যা সমাধানের একটি সহজ পদ্ধতি হল অ্যারে ট্রাভার্স করে প্রতিটি ভ্যালুর জন্য চেক করা যে সেটি কোথাও আরেকবার আছে কিনা। ডাবল অকারেন্স থাকা ভ্যালু রিটার্ন করুন।

উদাহরণ ১

#include <iostream> using namespace std; int findRepValArr(int arr[], int n){    for(int i = 0; i < n; i++)    for(int j = i+1; j < n; j++)    if(arr[i] == arr[j])       return arr[i]; } int main(){    int arr[] = { 5, 3, 2, 6, 6, 1, 4 };    int n = sizeof(arr) / sizeof(arr[0]);    cout<<"The repetitive value in the array is "<<findRepValArr(arr, n);    return 0; }

আউটপুট

The repetitive value in the array is 6

আরেকটি পদ্ধতি হল অ্যারের সামGrath্য থেকে 1 থেকে (N-1) পর্যন্ত প্রাকৃতিক সংখ্যার যোগফল বিয়োগ করে রিপিটিং ভ্যালু বের করা।

প্রথম N-1টি প্রাকৃতিক সংখ্যার যোগফল (Sn) = n*(n-1)/2

doubleVal = arrSum - (Sn)

উদাহরণ ২

#include <iostream> using namespace std; int findRepValArr(int arr[], int n){    int arrSum = 0;    for(int i = 0; i < n; i++)       arrSum += arr[i];    int sn = (((n)*(n-1))/2);    return arrSum - sn; } int main(){    int arr[] = { 5, 3, 2, 6, 6, 1, 4 };    int n = sizeof(arr) / sizeof(arr[0]);    cout<<"The repetitive value in the array is "<<findRepValArr(arr, n);    return 0; }

আউটপুট

The repetitive value in the array is 6

  1. C++-এ দুটি অ্যারে-এর কম্প্যাটিবিলিটি ডিফারেন্স বের করা

  2. অ্যারেতে দুটি সংখ্যার মধ্যকার ন্যূনতম দূরত্ব বের করা C++-তে

  3. C++-এ STL ব্যবহার করে অ্যারের ম্যাক্সিমাম এলিমেন্ট বের করা

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