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

C++ . में सिंगल नंबर III


मान लीजिए कि हमारे पास एक सरणी है, ठीक दो तत्व एक बार दिखाई देते हैं, लेकिन अन्य दो बार दिखाई दे रहे हैं। तो हमें एक फ़ंक्शन को परिभाषित करना होगा, जो इन दो नंबरों को ढूंढेगा। तो अगर दिया गया ऐरे [1,2,3,1,5,2] जैसा है, तो आउटपुट [3, 5] होगा।

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

  • xor_res :=0

  • मेरे लिए 0 से लेकर अंकों के आकार तक

    • xor_res :=xor_res XOR अंक[i]

  • स्थिति :=0

  • जबकि xor_res और 2^pos =0, do,

    • स्थिति को 1 से बढ़ाएं

  • num1 :=0

  • मेरे लिए 0 से लेकर अंकों के आकार तक - 1

    • अगर अंक [i] और 2 ^ पॉज़ 0 नहीं है, तो

      • num1 :=num1 XOR num[i]

  • num2 :=xor_res XOR num1

  • num1 और num2 लौटाएं

उदाहरण (C++)

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

#include <bits/stdc++.h>
using namespace std;
void print_vector(vector<auto> v){
   cout << "[";
   for(int i = 0; i<v.size(); i++){
      cout << v[i] << ", ";
   }
   cout << "]"<<endl;
}
class Solution {
   public:
   vector <int> singleNumber(vector<int>& nums) {
      int xor_result = 0;
      for (int i=0;i < nums.size(); i++) {
         xor_result = xor_result ^ nums[i];
      }
      int pos = 0;
      while ((xor_result & (1 << pos)) == 0) {
         pos++;
      }
      int num1 = 0;
      for (int i=0;i < nums.size(); i++) {
         if ((nums[i] & (1 << pos)) != 0) {
            num1 = num1 ^ nums[i];
         }
      }
      int num2 = xor_result ^ num1;
      vector<int> result = {num1, num2};
      return result;
   }
};
main(){
   Solution ob;
   vector<int> v = {1,2,1,3,2,5};
   print_vector(ob.singleNumber(v));
}

इनपुट

[1,2,1,3,2,5]

आउटपुट

[3, 5, ]

  1. C++ . में भूलभुलैया III

    मान लीजिए कि खाली जगह और दीवारों के साथ एक भूलभुलैया है और उस भूलभुलैया में एक गेंद भी है। गेंद ऊपर (यू), नीचे (डी), बाएं (एल) या दाएं (आर) दिशाओं को लुढ़क कर खाली जगहों से जा सकती है, लेकिन यह दीवार से टकराने तक लुढ़कती रहती है। जब गेंद रुकती है, तो वह अगली दिशा चुन सकती है। उस भूलभुलैया में एक छेद

  1. सी++ में सर्पिल मैट्रिक्स III

    मान लीजिए कि हमारे पास आर पंक्तियों और सी कॉलम के साथ एक 2 आयामी ग्रिड है, हम पूर्व की ओर (r0, c0) से शुरू करते हैं। यहां, ग्रिड का उत्तर-पश्चिम कोना पहली पंक्ति और स्तंभ पर है, और ग्रिड का दक्षिण-पूर्व कोना अंतिम पंक्ति और स्तंभ पर है। हम इस ग्रिड में हर स्थिति का दौरा करने के लिए एक दक्षिणावर्त सर

  1. C++ . में बल्ब स्विचर III

    मान लीजिए कि हमारे पास n बल्ब वाला एक कमरा है, इन्हें 1 से n तक क्रमांकित किया गया है, बाएं से दाएं एक पंक्ति में व्यवस्थित किया गया है। प्रारंभ में, सभी बल्ब बंद कर दिए जाते हैं। पल में k (k के लिए 0 से n -1 की सीमा में), हम प्रकाश [k] बल्ब को चालू करते हैं। एक बल्ब का रंग नीले रंग में तभी बदलता है