কম্পিউটার

C# ব্যবহার করে যোগফল শূন্য পর্যন্ত যোগ করে এমন সমস্ত অনন্য ট্রিপলেট কীভাবে খুঁজে পাবেন?


সহজ পদ্ধতি হল যে আমরা তিনটি নেস্টেড লুপ তৈরি করতে পারি এবং একে একে পরীক্ষা করতে পারি যে তিনটি উপাদানের যোগফল শূন্য বা না। যদি তিনটি উপাদানের যোগফল শূন্য হয় তবে উপাদানগুলি মুদ্রণ করুন।

সময়ের জটিলতা − O(n 3 )

মহাকাশের জটিলতা − O(1)

আমরা অ্যারের প্রতিটি মান সঞ্চয় করার জন্য একটি ক্রমবিহীন সেট ডেটা স্ট্রাকচার ব্যবহার করতে পারি। সেট O(1) সময়ে একটি উপাদান অনুসন্ধানের সুবিধা প্রদান করে। সুতরাং, অ্যারের প্রতিটি জোড়ার জন্য, আমরা তাদের যোগফলের ঋণাত্মক সন্ধান করব যা সেটটিতে বিদ্যমান থাকতে পারে। যদি এমন একটি উপাদান পাওয়া যায় তবে আমরা ট্রিপলেটটি প্রিন্ট করতে পারি যা হবে পূর্ণসংখ্যার জোড়া এবং তাদের যোগফলের ঋণাত্মক মান।

সময়ের জটিলতা − O(n 2 )

মহাকাশের জটিলতা − O(n)

উদাহরণ

public class Arrays{
   public List<List<int>> ThreeSum(int[] nums){
      List<List<int>> res = new List<List<int>>();
      if (nums == null || nums.Length == 0){
         return res;
      }
      var newnums = nums.OrderBy(x => x).ToArray();
      for (int i = 0; i < newnums.Count(); i++){
         int left = i + 1;
         int right = newnums.Count() - 1;
         while (left < right){
            int sum = newnums[i] + newnums[left] + newnums[right];
            if (sum == 0){
               List<int> l = new List<int>();
               l.Add(newnums[i]);
               l.Add(newnums[left]);
               l.Add(newnums[right]);
               res.Add(l);
               int leftValue = newnums[left];
               while (left < newnums.Length && leftValue == newnums[left]){
                left++;
               }
               int riightValue = newnums[right];
               while (right > left && riightValue == newnums[right]){
                  right--;
               }
            }
            else if (sum < 0){
               left++;
            }
            else{
               right--;
            }
         }
         while (i + 1 < newnums.Length && newnums[i] == newnums[i + 1]){
            i++;
         }
      }
      return res;
   }
}

static void Main(string[] args){
   Arrays s = new Arrays();
   int[] nums = { -1, 0, 1, 2, -1, -4 };
   var ss = s.ThreeSum(nums);
   foreach (var item in ss){
      foreach (var item1 in item){
         Console.WriteLine(item1);
      }
   }
}

আউটপুট

[[-1,-1,2],[-1,,0,1]]

  1. কিভাবে জাভা ব্যবহার করে একটি স্ট্রিং একটি অনন্য অক্ষর খুঁজে পেতে?

  2. Numpy ব্যবহার করে একটি প্রদত্ত ম্যাট্রিক্সের সমস্ত উপাদানের যোগফল কীভাবে খুঁজে পাওয়া যায়?

  3. পাইথনে প্রদত্ত যোগফল সহ একটি তালিকায় সমস্ত ট্রিপলেট খুঁজুন

  4. পাইথন ব্যবহার করে প্রাকৃতিক সংখ্যার যোগফল কিভাবে বের করবেন?