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

सी # का उपयोग करके लक्ष्य के करीब चौगुनी कैसे खोजें?

दो सूचक पैटर्न और शून्य के चौगुनी योग के समान है। हम एक समय में एक नंबर लेते हुए, सरणी के माध्यम से पुनरावृति करने के लिए एक समान दृष्टिकोण का पालन कर सकते हैं। हर कदम पर, हम चौगुनी और लक्ष्य संख्या के बीच के अंतर को बचाएंगे, और प्रत्येक चरण में हम इसकी तुलना अब तक के न्यूनतम लक्ष्य अंतर से करेंगे, ताकि अंत में, हम ट्रिपलेट को निकटतम योग के साथ वापस कर सकें।

समय की जटिलता

सरणी को छाँटने पर O(N* logN) लगेगा। कुल मिलाकर fourSumClosest() O(N * logN + N^3) लेगा, जो कि विषम रूप से O(N^3) के बराबर है।

अंतरिक्ष जटिलता

उपरोक्त एल्गोरिथम की अंतरिक्ष जटिलता O(N) होगी जो छँटाई के लिए आवश्यक है।

उदाहरण

public class Arrays{
   public int FourSumClosestToTarget(int[] nums, int target){
      if (nums == null || nums.Length == 0){
         return -1;
      }
      int[] newNums = nums.OrderBy(x => x).ToArray();
      int initialSum = newNums[0] + newNums[1] + newNums[2] + newNums[3];
      for (int i = 0; i < nums.Length; i++){
         for (int j = i; j < nums.Length; j++){
            int left = j + 1;
            int right = nums.Length - 1;
            while (left < right){
               int nearestSum = newNums[i] + newNums[j] + newNums[left] + newNums[right];
               if (nearestSum < initialSum){
                  initialSum = nearestSum;
               }
               if (nearestSum == target){
                  return nearestSum;
               }
               else if (nearestSum < target){
                  left++;
               }
               else{
                  right--;
               }
            }
         }
      }
     return initialSum;
   }
}

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

आउटपुट

0

  1. किसी संपत्ति का उपयोग करके जंजीर सरणी की लंबाई कैसे प्राप्त करें?

    सबसे पहले, एक दांतेदार सरणी घोषित करें और आरंभ करें। int[][] arr = new int[][] { new int[] {    0,    0 }, new int[] {    1,    2 }, new int[] {    2,    4 }, new int[] {    3,    6 }, new int[] {    4,  

  1. पायथन का उपयोग करके किसी संख्या का फैक्टोरियल कैसे खोजें?

    किसी संख्या का गुणनखंड 1 और उसके बीच के सभी पूर्णांकों का गुणनफल होता है। किसी दी गई संख्या का भाज्य ज्ञात करने के लिए, आइए हम 1 से स्वयं की सीमा पर लूप के लिए बनाते हैं। याद रखें कि रेंज () फ़ंक्शन स्टॉप वैल्यू को बाहर करता है। इसलिए स्टॉप वैल्यू इनपुट नंबर से एक ज्यादा होना चाहिए। श्रेणी में प्रत

  1. पायथन का उपयोग करके प्राकृतिक संख्याओं का योग कैसे ज्ञात करें?

    आप लूप के दौरान एक चर i के मान को क्रमिक रूप से बढ़ाने के लिए उपयोग कर सकते हैं और इसे संचयी रूप से जोड़ सकते हैं। s,i=0,0 n=10 while i<n:    i=i+1    s=s+i print ("sum of first 10 natural numbers",s) फॉर लूप का उपयोग प्राकृतिक संख्याओं की एक श्रृंखला पर लूप करने