Find the nth most frequent number in array.
(There is no limit on the range of the numbers)
मुझे लगता है कि हम कर सकते हैंसरणी में एन वें सबसे लगातार संख्या का पता लगाएं
(i) सी में नक्शे का उपयोग ++ हर तत्व की घटना की दुकान
(ii) अधिकतम ढेर का निर्माण तत्व के अवसर (या आवृत्ति) के रैखिक समय में और फिर एन-वें तत्व तक निकालें, प्रत्येक निकासी को हेपफाइफ़ करने के लिए लॉग (एन) समय लगता है।
(iii) हम एन वें सबसे अक्सर संख्या की आवृत्ति मिल जाएगा
(iv) तो हम तत्व इस आवृत्ति वाले को खोजने के लिए कर सकते हैं रैखिक हैश के माध्यम से खोज।
समय - ओ (NlogN) स्पेस - हे (एन)
कोई बेहतर तरीका है?
सी [चयन एल्गोरिथ्म] (http://en.wikipedia.org/wiki/ Selection_algorithm) जो O (N) में NTH तत्व से और unordered सरणी का चयन करने की अनुमति देता है। – salva
@ सल्वा - प्रश्न एन-वें सबसे फ्रीक्वेंसी संख्या का चयन करना है, न कि एनएच तत्व। – user754657
@ user754657: हाँ, चरण * i * अभी भी आवश्यक है, लेकिन फिर * ii *, * iii * और * iv * को चयन एल्गोरिदम द्वारा प्रतिस्थापित किया जा सकता है जो ओ (एन) है, जिसके परिणामस्वरूप ओ (एन) वैश्विक स्तर पर। – salva