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

C++ में शब्दकोश क्रम में K-वां सबसे छोटा


मान लीजिए हमारे पास दो मान n और k हैं। हमें 1 से n की सीमा में शब्दकोश क्रम में kवां सबसे छोटा पूर्णांक ढूंढना है। तो यदि इनपुट n = 14 और k = 3 जैसा है, तो आउटपुट 11 होगा, क्योंकि अनुक्रम [1, 10, 11, 12, 13, 14, 2, 3, 4, 5, 6, 7, 8, 9] होगा, फिर kवीं संख्या 11 है।

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

  • एक फ़ंक्शन findKthNumber() परिभाषित करें, जो n, k लेगा,
  • curr := 1
  • (k को 1 से घटाएं)
  • जब k शून्येतर है, करें -
    • steps := फ़ंक्शन calcSteps(n, curr, curr + 1) को कॉल करें
    • यदि steps <= k, तो -
      • k := k - steps
      • (curr को 1 से बढ़ाएं)
    • अन्यथा
      • curr := curr * 10
      • k := k - 1
    • curr लौटाएं
  • एक फ़ंक्शन calcSteps() परिभाषित करें, जो nax, n1, n2 लेगा,
  • ret := 0
  • जब n1 <= nax, करें -
    • ret := ret + nax + 1 और n2 - n1 का न्यूनतम
    • n1 := n1 * 10
    • n2 := n2 * 10
  • ret लौटाएं

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

उदाहरण

#include <bits/stdc++.h> using namespace std; typedef long long int lli; class Solution { public:    int findKthNumber(int n, int k) {       int curr = 1;       k--;       while(k){          int steps = calcSteps(n, curr, curr + 1);          if(steps <= k){             k -= steps;             curr++;          }else{             curr *= 10;             k -= 1;          }       }       return curr;    }    int calcSteps(lli nax, lli n1, lli n2){       int ret = 0;       while(n1 <= nax){          ret += min(nax + 1, n2) - n1;          n1 *= 10;          n2 *= 10;       }       return ret;    } }; main(){    Solution ob;    cout << (ob.findKthNumber(14,3)); }

इनपुट

14,3

आउटपुट

11

  1. C++ में BST में k-वां सबसे छोटा तत्व खोजें (BST में ऑर्डर स्टैटिस्टिक्स) C++ में BST में k-वां सबसे छोटा तत्व खोजें (BST में ऑर्डर स्टैटिस्टिक्स)

    मान लीजिए हमारे पास एक बाइनरी सर्च ट्री और एक मान K इनपुट के रूप में है, हमें ट्री में K-वां सबसे छोटा तत्व ढूंढना है।तो, यदि इनपुट इस तरह हैk = 3, तो आउटपुट 15 होगा।इसे हल करने के लिए, हम इन चरणों का पालन करेंगे −एक फ़ंक्शन find_kth_smallest() परिभाषित करें, यह रूट, काउंट, k लेगा,यदि रूट NULL है, त

  1. - C++ में वेक्टर को अवरोही क्रम में सॉर्ट करना

    C++ में वेक्टर को सॉर्ट करना std::sort() का उपयोग करके किया जा सकता है। यह <algorithm> हेडर में परिभाषित है। एक स्थिर सॉर्ट प्राप्त करने के लिए std::stable_sort का उपयोग किया जाता है। यह बिल्कुल sort() की तरह है लेकिन समान एलिमेंट्स के सापेक्ष क्रम को बनाए रखता है। आवश्यकतानुसार Quicksort(),

  1. - C++ प्रोग्राम: एलिमेंट्स को लेक्सिकोग्राफिकल ऑर्डर (डिक्शनरी ऑर्डर) में सॉर्ट करना

    लेक्सिकोग्राफिकल ऑर्डर उस तरीके को दर्शाता है जिस तरह शब्दों को एक सूची में क्रमबद्ध किया जाता है, उनके अल्फाबेट्स के अनुसार वर्णमाला क्रम के आधार पर। उदाहरण: शब्दों की सूची: Harry Adam Sam शब्दों का लेक्सिकोग्राफिकल ऑर्डर: Adam Harry Sam उदाहरण #include <iostream> using namespace std; int m