स्टैक ओवरफ्लो पर, यहां एक ही सवाल था, लेकिन मुझे यह नहीं मिला।
चलिए 15 के बजाय 3 का उपयोग करते हैं, क्योंकि यह आसान होगा और मुझे लगता है कि यह पूरी तरह समतुल्य है। अनुक्रम 4, 5, 4, 5, 3, 3, 4, 5
होगा, बाइनरी 100, 101, 100, 101, 11, 11, 100, 101
में।
आप निम्न कर सकते हैं: योग सभी मूल्यों संख्या के कम से कम में महत्वपूर्ण बिट और (मूल रूप से 15) 3 से अधिक शेष ले:
bit1 = (0 + 1 + 0 + 1 + 1 + 1 + 0 + 1) % 3 = 5 % 3 = 2 != 0
अगर यह != 0
है तो उस बिट 1 के बराबर करने के लिए है संख्या जो हम खोजने की कोशिश कर रहे हैं। अब अगले करने के लिए ले जा सकते हैं:
bit2 = (0 + 0 + 0 + 0 + 1 + 1 + 0 + 0) % 3 = 2 % 3 = 2 != 0
bit3 = (1 + 1 + 1 + 1 + 0 + 0 + 1 + 1) % 3 = 6 % 3 = 0 == 0
तो हम bit3 == 0, bit2 != 0, bit1 != 0
है, 011
बना रही है। दशमलव में कनवर्ट करें: 3
।
अंतरिक्ष जटिलता O(1)
है और समय जटिलता O(n * BIT_LENGTH_OF_VARS)
, जहां BIT_LENGTH_OF_VARS == 8
बाइट के लिए, BIT_LENGTH_OF_VARS == 32
पूर्णांक, आदि तो यह बड़ा हो सकता है के लिए है, लेकिन स्थिरांक asymptotic व्यवहार को प्रभावित नहीं करते और O(n * BIT_LENGTH_OF_VARS)
वास्तव में O(n)
है।
यही है!
आह, मैं बस हैश-टेबल कहने जा रहा था! :) – leppie
@leppie अगर आप हैशटेबल चाहते हैं जो 'ओ (1)' की गारंटी देगी तो यह आकार में '2^32' होगा जो भ्रमित है। अन्यथा आप गारंटी नहीं दे सकते 'ओ (एन) ' – Andrey
http://stackoverflow.com/questions/3963409/interview-question-dealing-with-m-occurrences-among-n का डुप्लिकेट – Nabb