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

C++ में रैंडम पिक इंडेक्स


मान लीजिए हमारे पास संभावित डुप्लिकेट के साथ पूर्णांकों की एक सरणी है, हमें दिए गए लक्ष्य संख्या का इंडेक्स यादृच्छिक रूप से चुनना है। हम मान सकते हैं कि दी गई लक्ष्य संख्या सरणी में मौजूद होनी चाहिए।

उदाहरण के लिए, यदि सरणी [1,2,3,3,3] जैसी है, तो pick(3), 2, 3, 4 को यादृच्छिक रूप से लौटा सकता है।

इसे हल करने के लिए, हम निम्नलिखित चरणों का पालन करेंगे:

  • ret := -1, cnt := 1
  • i को 0 से v के आकार तक लूप करें
    • यदि v[i] = लक्ष्य, तो
      • यदि यादृच्छिक संख्या mod cnt = 0, तो ret = i
      • cnt := cnt + 1
  • ret लौटाएं

उदाहरण (C++)

बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:

#include <bits/stdc++.h> using namespace std; class Solution {    public:    vector <int> v;    Solution(vector<int>& nums) {       srand(time(NULL));       v = nums;    }    int pick(int target) {       int ret = -1;       int cnt = 1;       for(int i = 0; i < v.size(); i++){          if(v[i] == target){             if(rand() % cnt++ == 0) ret = i;          }       }       return ret;    } }; main(){    vector<int> v = {1,2,3,3,3};    Solution ob(v);    cout << (ob.pick(3)); }

इनपुट

Initialize with [1,2,3,3,3] Call pick(3) to get random index positions

आउटपुट

4 3 4 2

  1. - C++ में दाईं ओर NGEs (अगले बड़े तत्व) की संख्या

    आपको एक सरणी और लक्ष्य तत्व का इंडेक्स दिया गया है। हमें दिए गए तत्व से बड़े तत्वों की संख्या उसकी दाईं ओर गिननी है। आइए एक उदाहरण देखते हैं।इनपुटarr = [2, 3, 5, 1, 4, 2, 6] index = 3आउटपुट3लक्ष्य इंडेक्स का तत्व 1 है। इसकी दाईं ओर तीन तत्व हैं यानी 4, 2, 6 जो 1 से बड़े हैं।एल्गोरिदमसरणी और लक्ष्य त

  1. C++ में रैंडम पॉइंटर के साथ लिस्ट कॉपी करें C++ में रैंडम पॉइंटर के साथ लिस्ट कॉपी करें

    लिंक्ड लिस्ट एक रैखिक डेटा संरचना है जिसमें प्रत्येक नोड के दो ब्लॉक होते हैं जैसे कि एक ब्लॉक में नोड का मान या डेटा होता है और दूसरा ब्लॉक अगले फील्ड का पता रखता है। मान लीजिए हमारे पास एक लिंक्ड लिस्ट है जैसे कि प्रत्येक नोड में एक रैंडम पॉइंटर होता है जो लिस्ट में अन्य नोड्स की ओर इंगित करता है।

  1. - C++ प्रोग्राम: यादृच्छिक संख्या उत्पन्न करना

    आइए देखें कि C++ का उपयोग करके यादृच्छिक संख्याएं कैसे उत्पन्न करें। यहां हम 0 से कुछ मान तक की रैंडम संख्या उत्पन्न कर रहे हैं। (इस प्रोग्राम में अधिकतम मान 100 है)। इस ऑपरेशन को करने के लिए हम srand() फंक्शन का उपयोग कर रहे हैं। यह C लाइब्रेरी में है। फंक्शन void srand(unsigned int seed) फंक्शन r