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

C++ में दिए गए मान के निकटतम तत्वों को खोजें

विचार करें कि हमारे पास कुछ तत्वों के साथ एक सरणी ए है। हमारे पास दो अन्य मान X और k हैं। हमारा कार्य सरणी A से X के निकटतम तत्वों की k संख्या ज्ञात करना है। यदि तत्व X सरणी में मौजूद है, तो यह आउटपुट में नहीं दिखाया जाएगा। अगर ए =[12, 16, 22, 30, 35, 39, 42, 45, 48, 50, 53, 55, 56] और एक्स =35, के =4। आउटपुट 30, 39, 42, 45 होगा। ।

इसे हल करने के लिए, हम द्विआधारी खोज दृष्टिकोण का उपयोग करेंगे। इसके इस्तेमाल से हमें क्रॉसओवर पॉइंट मिलेगा। यदि क्रॉसओवर पॉइंट का इंडेक्स मिल गया है, तो हम k-निकटतम तत्वों को O(k) समय में प्रिंट कर सकते हैं।

उदाहरण

#include<iostream>
using namespace std;
int getCrossoverPoint(int arr[], int left, int right, int x) {
   if (arr[right] <= x)
      return right;
   if (arr[left] > x)
      return left;
      int mid = (left + right)/2;
   if(arr[mid] <= x && arr[mid+1] > x)
      return mid;
   if(arr[mid] < x)
      return getCrossoverPoint(arr, mid+1, right, x);
      return getCrossoverPoint(arr, left, mid - 1, x);
}
void findKClosestNumbers(int arr[], int x, int k, int n) {
   int l = getCrossoverPoint(arr, 0, n-1, x);
   int r = l+1;
   int count = 0;
   if (arr[l] == x) l--;
      while (l >= 0 && r < n && count < k) {
         if (x - arr[l] < arr[r] - x)
            cout << arr[l--] << " ";
         else
            cout << arr[r++] << " ";
            count++;
      }
      while (count < k && l >= 0){
         cout << arr[l--] << " ";
         count++;
      }
      while (count < k && r < n){
         cout << arr[r++] << " ";
         count++;
      }
}
int main() {
   int arr[] ={12, 16, 22, 30, 35, 39, 42, 45, 48, 50, 53, 55, 56};
   int n = sizeof(arr)/sizeof(arr[0]);
   int x = 35, k = 5;
   findKClosestNumbers(arr, x, k, n);
}

आउटपुट

39 30 42 45 48

  1. सी ++ में सरणी में प्रत्येक तत्व के लिए निकटतम मान पाएं

    यहां हम देखेंगे कि किसी सरणी में प्रत्येक तत्व के लिए निकटतम मान कैसे प्राप्त करें। यदि किसी तत्व x में अगला तत्व है जो उससे बड़ा है, और सरणी में भी मौजूद है, तो वह उस तत्व का अधिक मूल्य होगा। यदि तत्व मौजूद नहीं है, तो -1 लौटाएं। मान लीजिए कि सरणी तत्व [10, 5, 11, 6, 20, 12] हैं, तो बड़े तत्व [11,

  1. सी ++ में सरणी में प्रत्येक तत्व के लिए निकटतम अधिक मूल्य खोजें

    यहां हम देखेंगे कि किसी सरणी में प्रत्येक तत्व के लिए निकटतम अधिक मूल्य कैसे प्राप्त करें। यदि किसी तत्व x में अगला तत्व है जो उससे बड़ा है, और सरणी में भी मौजूद है, तो वह उस तत्व का अधिक मूल्य होगा। यदि तत्व मौजूद नहीं है, तो -1 लौटाएं। मान लीजिए कि सरणी तत्व [10, 5, 11, 6, 20, 12] हैं, तो बड़े तत्

  1. C++ में दिए गए सरणी के तत्वों के भाज्य का GCD ज्ञात कीजिए

    मान लीजिए कि हमारे पास एन तत्वों के साथ एक सरणी ए है। हमें सरणी के सभी तत्वों के भाज्य का GCD ज्ञात करना है। मान लीजिए कि तत्व {3, 4, 8, 6} हैं, तो भाज्य का GCD 6 है। यहाँ हम ट्रिक देखेंगे। चूँकि दो संख्याओं का GCD वह सबसे बड़ी संख्या है, जो दोनों संख्याओं को विभाजित करती है, तो दो संख्याओं के भाज्य