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

বৈধ ত্রিভুজ ট্রিপলেটের সংখ্যা গণনা C++-এ


একটি সংখ্যা অ্যারে দেওয়া আছে। লক্ষ্য হল অ্যারে থেকে তিনটি উপাদান বেছে নিয়ে যেসব ট্রিপলেট ত্রিভুজের বাহু হিসেবে ব্যবহার করা যায়, তাদের সংখ্যা বের করা। ত্রিভুজের শর্ত: যেকোনো দুটি বাহুর যোগফল তৃতীয় বাহুর চেয়ে বড় হয়।

অ্যারে সর্ট করে টু-পয়েন্টার টেকনিক দিয়ে O(n²) সময়ে সমাধান করা হয়।

উদাহরণ

ইনপুট: [2,2,3,4]

আউটপুট: বৈধ ত্রিভুজ ট্রিপলেট: ৩

ব্যাখ্যা: [2,3,4] (প্রথম ২ দিয়ে), [2,3,4] (দ্বিতীয় ২ দিয়ে), [2,2,3]

অ্যালগরিদম
  • অ্যারে সর্ট করা হয়।
  • সবচেয়ে বড় বাহু i ধরে left=0, right=i-1 রাখা হয়।
  • nums[left] + nums[right] > nums[i] হলে right-left সংখ্যক জোড়া হবে, right-- করা হয়।
  • অন্যথায় left++ করা হয়।
C++ কোড উদাহরণ
#include 
using namespace std;

class Solution {
public:
    int triangleNumber(vector& nums) {
        int ret = 0;
        int n = nums.size();
        sort(nums.begin(), nums.end());
        for(int i = n - 1; i >= 0; i--){
            int right = i - 1;
            int left = 0;
            while(left < right){
                int sum = nums[left] + nums[right];
                if(sum > nums[i]){
                    ret += right - left;
                    right--;
                } else {
                    left++;
                }
            }
        }
        return ret;
    }
};

int main(){
    vector v = {2,2,3,4};
    Solution ob;
    cout << ob.triangleNumber(v);
    return 0;
}
আউটপুট

উপরোক্ত কোড রান করলে আউটপুট:

৩
  1. C++ প্রোগ্রাম: দিয়ে দেয়া আকারের ডোডেকাগন बनाने के तरीক সংখ্যা গণনা

  2. বাইনারি ম্যাট্রিক্স কে শূন্য ম্যাট্রিক্সে রূপান্তরের অপারেশন গণনা (C++ প্রোগ্রাম)

  3. C++-এ একটি সংখ্যার সব পারফেক্ট ডিভাইজার গণনা

  4. C++ প্রোগ্রাম: অ্যারেতে ইনভার্শন কাউন্ট করা