এই সমস্যাতে, আমাদের একটি অনঅর্ডার্ড অ্যারে 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