Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C#

C# का उपयोग करके शून्य के निकटतम सभी अद्वितीय चौगुनी कैसे खोजें?


आसान दृष्टिकोण यह है कि हम चार नेस्टेड लूप बना सकते हैं और एक-एक करके जांच सकते हैं कि सभी चार तत्वों का योग शून्य है या नहीं। यदि चार तत्वों का योग शून्य है तो तत्वों को प्रिंट करें।

समय जटिलता − O(n4)

स्पेस जटिलता − O(1)

हम प्रत्येक सरणी मान को संग्रहीत करने के लिए एक अनऑर्डर सेट डेटा संरचना का उपयोग कर सकते हैं। सेट O(1) समय में किसी तत्व को खोजने का लाभ प्रदान करता है। इसलिए, सरणी में प्रत्येक जोड़ी के लिए, हम उनके योग के नकारात्मक को देखेंगे जो सेट में मौजूद हो सकता है। यदि ऐसा तत्व मिलता है तो हम तिकड़ी को प्रिंट कर सकते हैं जो पूर्णांकों की जोड़ी और उनके योग का नकारात्मक मान होगी।

समय जटिलता − O(n3)

स्पेस जटिलता − O(n)

उदाहरण

public class Arrays{    public List<List<int>> FourSum(int[] nums){       List<List<int>> res = new List<List<int>>();       if (nums == null || nums.Length == 0){          return null;       }       int[] newNums = nums.OrderBy(x => x).ToArray();       for (int i = 0; i < newNums.Length; i++){          for (int j = i; j < newNums.Length; j++){             int left = j + 1;             int right = newNums.Length - 1;             while (left < right){                int sum = newNums[i] + newNums[j] + newNums[left] + newNums[right];                if (sum == 0){                   List<int> sums = new List<int>();                   sums.Add(newNums[i]);                   sums.Add(newNums[j]);                   sums.Add(newNums[left]);                   sums.Add(newNums[right]);                   res.Add(sums);                   int leftValue = newNums[left];                   int rightValue = newNums[right];                   while (left < nums.Length && leftValue == nums[left]){                      left++;                   }                   while (right > left && right == nums[right]){                      right--;                   }                }                else if (sum < 0){                   left++;                }                else{                   right--;                }             }             while (j + 1 < nums.Length && nums[j] == nums[j + 1]){                j++;             }          }          while (i + 1 < nums.Length && nums[i] == nums[i + 1]){             i++;          }       }       return res;    } } static void Main(string[] args){    Arrays s = new Arrays();    int[] nums = { 1,0,-1,0,-2,2 };    var ss = FourSum(nums);    foreach (var item in ss){       foreach (var item1 in item){          Console.WriteLine(item1);       }    } }

आउटपुट

[[-2,-1,1,2],[-2,0,0,2],[-1,0,0,1]]
  1. - C# में स्ट्रिंग के सभी कैरेक्टर्स यूनिक हैं या नहीं जांचें

    C# में स्ट्रिंग के सभी कैरेक्टर्स यूनिक हैं या नहीं जांचना यह एक सामान्य एल्गोरिदमिक समस्या है। हम दो दृष्टिकोण देखेंगे: नेस्टेड लूप (O(n²)) और HashSet (O(n))। दृष्टिकोण 1: नेस्टेड लूप (ब्रूट फोर्स) प्रत्येक कैरेक्टर की तुलना बाद के सभी कैरेक्टर्स से करें। public static bool AreAllCharsUniqueBruteF

  1. - NumPy का उपयोग करके दिए गए मैट्रिक्स के सभी तत्वों का योग कैसे ढूंढें?

    इस प्रोग्राम में, हम numpy लाइब्रेरी में sum() फ़ंक्शन का उपयोग करके numpy मैट्रिक्स के सभी पदों को जोड़ेंगे। हम पहले एक रैंडम numpy मैट्रिक्स बनाएंगे और फिर, हम सभी तत्वों का योग प्राप्त करेंगे। एल्गोरिदम चरण 1: numpy आयात करें। चरण 2: random() फ़ंक्शन का उपयोग करके रैंडम m×n मैट्रिक्स बनाएं। चरण

  1. - पायथन का उपयोग करके सभी खुली फ़ाइलों को कैसे बंद करें?

    पायथन में नेटिव रूप से सभी खुली फ़ाइलों को ट्रैक करने का कोई तरीका नहीं है। ऐसा करने के लिए आपको या तो सभी फ़ाइलों को स्वयं ट्रैक करना चाहिए या हमेशा फ़ाइलें खोलने के लिए with स्टेटमेंट का उपयोग करना चाहिए जो फ़ाइल को ऑटोमेटिकली बंद कर देता है जब यह स्कोप से बाहर जाती है या एरर का सामना करती है। उद