ধরুন আমাদের একটি অ্যারে রয়েছে যা অ-ঋণাত্মক পূর্ণসংখ্যা নিয়ে গঠিত, আমাদের কাজ হল অ্যারে থেকে নির্বাচিত ট্রিপলেটের সংখ্যা গণনা করা যা ত্রিভুজ তৈরি করতে পারে যদি আমরা সেগুলিকে ত্রিভুজের পার্শ্ব দৈর্ঘ্য হিসাবে নিই। সুতরাং যদি ইনপুটটি [2,2,3,4] এর মত হয়, তাহলে ফলাফল হবে 3 হিসাবে [2,3,4] প্রথম 2 ব্যবহার করে, [2,3,4] দ্বিতীয় 2 ব্যবহার করে এবং [2,2] ,3]।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- ret :=0, n :=সংখ্যার আকার, সংখ্যা সাজান
- এর জন্য n – 1 থেকে 0
- রেঞ্জে
- ডান :=i – 1, বাম :=0
- যখন বাম
- সমষ্টি :=সংখ্যা[বাম] + সংখ্যা[ডান]
- যদি যোগফল> nums[i] হয়, তাহলে ডানে-বামে ret বাড়ান, ডানে 1 কমিয়ে দিন, অন্যথায় বামে 1 দিয়ে বাড়ান
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
int triangleNumber(vector<int>& 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;
}
};
main(){
vector<int> v = {2,2,3,4};
Solution ob;
cout << (ob.triangleNumber(v));
} ইনপুট
[2,2,3,4]
আউটপুট
3