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

অ্যারেতে বাম পয়েন্টারের চূড়ান্ত إندেক্স বের করা (C++)


সমস্যা বিবরণ

একটি অ্যারে arr[] (সাইজ N) দেওয়া আছে। দুটি পয়েন্টার: বাম (ইনডেক্স ০ থেকে শুরু, যোগফল বেড়ায়) এবং ডান (ইনডেক্স N-1 থেকে শুরু, যোগফল বেড়ায়)। যেটির যোগফল কম সেটি আগায় বেড়ায়। দুটি পয়েন্টার মেলা পর্যন্ত চলে। বাম পয়েন্টারের চূড়ান্ত ইনডেক্স বের করা।

উদাহরণ

ইনপুট: {5,6,3,7,9,4}
আউটপুট: 2
ব্যাখ্যা: বাম পয়েন্টার ইনডেক্স ২-এ রুকে।

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

দুটি পয়েন্টার ও তাদের যোগফল মেইনটেইন করে হয়স بينما লুপ চালানো।

প্রোগ্রাম উদাহরণ

#include <iostream>
using namespace std;

int findLeftPointerIdx(int arr[], int n) {
    if(n==1) return 0;
    int l=0, r=n-1, sumL=arr[0], sumR=arr[n-1];
    while(r > l+1){
        if(sumL < sumR){ l++; sumL+=arr[l]; }
        else if(sumL > sumR){ r--; sumR+=arr[r]; }
        else break;
    }
    return l;
}

int main() {
    int arr[]={5,6,3,7,9,4};
    cout << findLeftPointerIdx(arr,6); // 2
    return 0;
}

আউটপুট

2
  1. C++-এ বাইনারি ট্রির বাম পাতা নোডের যোগফল বের করা

  2. C++-এ STL ব্যবহার করে অ্যারে এলিমেন্টগুলোর যোগফল (Sum) বের করা

  3. সি++ প্রোগ্রাম: অ্যারেতে ফ্যাক্টোরিয়ালের যোগফল নির্ণয়

  4. C++-এ পয়েন্টার অর্থমেটিক ব্যবহার করে অ্যারে সমষ্টি বের করা