सकारात्मक पूर्णांक और एक पूर्णांक एम के अनुक्रम को देखते हुए, अनुक्रम में पहला नंबर लौटाएं जो एम से अधिक है (या -1 यदि यह अस्तित्व में नहीं है) ।किसी अनुक्रमित अनुक्रम में दिए गए पहले नंबर से पहले नंबर प्राप्त करें
उदाहरण: अनुक्रम = [2, 50, 8, 9, 1], एम = 3 -> वापसी = 50
हे (लॉग एन) प्रत्येक प्रश्न के लिए आवश्यक (preprocessing के बाद) के लिए।
मैं BSTs के बारे में सोचा है, लेकिन एक आरोही अनुक्रम मैं सिर्फ एक लंबे पथ प्राप्त होता है, जो मुझे ओ (logn) समय देना नहीं होता ...
संपादित दिया: प्रयुक्त संरचना भी होना चाहिए संशोधित करने में आसान, यानी उस तत्व के साथ पाए गए तत्व को प्रतिस्थापित करना संभव है और किसी अन्य एम के लिए खोज दोहराएं (सबकुछ - प्रीप्रोकैसिंग - ओ (लॉगन) के अलावा)। और निश्चित रूप से यह अच्छा होगा, अगर मैं 'पहले बड़े' को 'पहले छोटे' में बदल सकता हूं और एल्गोरिदम में बहुत अधिक परिवर्तन नहीं करना पड़ता था। और यदि यह मदद करता है, तो हम मान सकते हैं कि सभी संख्याएं सकारात्मक हैं और कोई दोहराव नहीं है।
यदि संख्या क्रमबद्ध की जाती है तो आप बाइनरी खोज का उपयोग कर सकते हैं। –
अद्यतन: उदाहरण से पहले यह स्पष्ट है! = सबसे कम। पहले = इनपुट में पहले। –
प्रीप्रोकैसिंग को कौन सा डेटा दिया जाता है? केवल अनुक्रम? –