Interview Question: Duplicate In Array C++

Kartikeya Mishra
5 min readOct 25, 2023

--

Company Interviews Using C++ Data Structures and Algorithms

using namespace std;
#include <set>
int findDuplicate(vector<int> &arr)
{
set <int> uniqueElement;
for (int i = 0; i < arr.size(); i++) {
if (uniqueElement.count(arr[i])) {
return arr[i];
}
uniqueElement.insert(arr[i]);
}
return -1;
}
Duplicate In Array

This C++ code defines a function called `findDuplicate` that is used to find a duplicate element in a given vector of integers (`arr`). The function utilizes the C++ Standard Library’s `set` container to efficiently identify duplicate values. Here’s a step-by-step explanation of the code:

1. `using namespace std;`: This line tells the compiler to use the `std` namespace, which contains standard C++ libraries. This allows you to use objects, functions, and classes from the C++ Standard Library without specifying the namespace explicitly.

2. `#include <set>`: This line includes the C++ Standard Library header file for the `set` container. The `set` is a container that stores unique elements in a sorted order.

3. The `findDuplicate` function takes a reference to a vector of integers as its parameter.

4. Inside the function, a `set<int>` called `uniqueElement` is declared. This set will be used to store unique elements from the input vector.

5. The code then enters a loop that iterates through the elements of the input vector `arr`. The loop is controlled by the variable `i`, which ranges from 0 to the size of the vector minus one.

6. Within the loop, the code checks whether the current element `arr[i]` is already present in the `uniqueElement` set using the `count` function:

If `arr[i]` is found in the set (meaning it is a duplicate), the function returns this value, effectively terminating the search.

7. If the code doesn’t find a duplicate element during the loop, it inserts the current element `arr[i]` into the `uniqueElement` set. This is done to keep track of unique elements encountered so far.

8. If the loop completes without finding a duplicate, the function returns -1, indicating that no duplicates were found in the input vector.

In summary, the `findDuplicate` function uses a `set` to efficiently detect duplicate elements in a vector of integers. If it finds a duplicate, it returns that value; otherwise, it returns -1 to indicate no duplicates were found.

Hindi :

यह C++ कोड findDuplicate नाम की एक फ़ंक्शन को परिभाषित करता है जिसका उपयोग दिए गए पूरे अंकों के एक दुहराने आपूर्ति में खोजने के लिए किया जाता है (arr). इस फ़ंक्शन ने दुहराने मूल्यों को पहचाने के लिए C++ मानक पुस्तकालय के set कंटेनर का उपयोग किया है. यहां कोड की कदम-से-कदम समझाना गया है:

  1. using namespace std;: इस पंक्ति में कॉम्पाइलर को std नेमस्पेस का उपयोग करने के लिए कहा जाता है, जिसमें सामान्य C++ पुस्तकालय शामिल हैं. इससे आपको C++ मानक पुस्तकालय से आज्ञानिक रूप से नामस्थापन नामांकन किए बिना उसके ऑब्जेक्ट, फ़ंक्शन और कक्षों का उपयोग करने की अनुमति होती है.
  2. #include <set>: इस पंक्ति में set कंटेनर के लिए C++ मानक पुस्तकालय का हैडर फ़ाइल शामिल की जाती है. set एक कंटेनर है जो साजिश आदर में अनूपचारिक तत्वों को संग्रहित करता है.
  3. findDuplicate फ़ंक्शन एक पूरे अंकों के एक संदर्भ को अपने पैरामीटर के रूप में लेता है.
  4. फ़ंक्शन के अंदर, uniqueElement नामक एक set<int> का नामकरण किया जाता है. इस सेट का उपयोग प्रावेश वेक्टर से अनूपचारिक तत्वों को संग्रहित करने के लिए किया जाएगा.
  5. उसके पश्चात्, कोड एक लूप में प्रवेश करता है जो प्रावेश वेक्टर arr के तत्वों के माध्यम से चक्रवृत्तिरूप में होता है. यह लूप चर i द्वारा नियंत्रित किया जाता है, जो वेक्टर के आकार से 1 कम होते हुए 0 से बढ़कर जाता है.
  6. इस लूप के अंदर, कोड जांचता है कि क्या वर्तमान तत्व arr[i] पहले से ही uniqueElement सेट में मौजूद है या नहीं, count फ़ंक्शन का उपयोग करके.
  7. यदि arr[i] सेट में पाया जाता है (यानी यह दुहरान है), तो फ़ंक्शन इस मूल्य को लौटाता है, प्रभावी रूप से खोज को समाप्त करता है.
  8. अगर कोड लूप के दौरान कोई दुहरान तत्व नहीं पाता है, तो वर्तमान तत्व arr[i] को uniqueElement सेट में सम्मिलित करता है.
    यह केवल दिखाने के लिए किया जाता है कि अब तक मिले अनूपचारिक तत्वों का सवाल रखा जा रहा है.
  9. अगर लूप एक दुहरान नहीं मिलाने पर पूरा हो जाता है, तो फ़ंक्शन -1 लौटाता है, जिससे दिखाया जाता है कि प्रवेश वेक्टर में कोई दुहरान नहीं मिला.

संक्षेप में, findDuplicate फ़ंक्शन एक पूरे अंकों के वेक्टर में दुहराने तत्वों की पहचान के लिए एक set का उपयोग करता है. अगर यह दुहरान पाता है, तो यह मूल्य लौटाता है; अन्यथा, यह इसका संकेत देने के लिए -1 लौटाता है कि प्रवेश वेक्टर में कोई दुहरान नहीं मिला.

Hinglish :

Yeh C++ code ek function ko define karta hai jo diye gaye integers ke vector (`arr`) mein se duplicate element ko dhoondne ke liye istemal hota hai. Is function mein C++ Standard Library ke `set` container ka istemal kiya gaya hai taki duplicate values ko efficiently pehchana ja sake. Is code ka ek step-by-step samjhane ka prayaas kiya gaya hai:

1. `using namespace std;`: Is line se compiler ko bata diya jata hai ki `std` namespace ka istemal karna hai. `std` namespace mein standard C++ libraries hote hain. Isse C++ Standard Library ke objects, functions, aur classes ko namespace specify kiye bina istemal kiya ja sakta hai.

2. `#include <set>`: Is line se C++ Standard Library ke `set` container ke header file ko include kiya gaya hai. `set` ek container hai jo sorted order mein unique elements ko store karta hai.

3. `findDuplicate` function ek reference lekar ek vector of integers ko parameter ke roop mein leta hai.

4. Function ke andar, `set<int>` jiska naam `uniqueElement` hai, declare kiya gaya hai. Is set mein input vector se unique elements ko store karne ke liye istemal hoga.

5. Fir code loop mein enter hota hai jo input vector `arr` ke elements par iterate karta hai. Loop ko `i` naam ke variable dwara control kiya jata hai, jo 0 se vector ke size minus ek tak range karta hai.

6. Loop ke andar, code yeh check karta hai ki kya current element `arr[i]` pehle se `uniqueElement` set mein mojud hai ya nahi. Agar `arr[i]` set mein paya jata hai (isko matlab hai ki yeh ek duplicate hai), to function yeh value return karta hai, jisse dhoondhne ka process khatam ho jata hai.

7. Agar loop ke dauran code duplicate element nahi dhund pata hai, to yeh current element `arr[i]` ko `uniqueElement` set mein insert kar deta hai. Isse yeh track kiya jata hai ki ab tak kitne unique elements ko encounter kiya gaya hai.

8. Agar loop duplicate dhundne ke bina complete ho jata hai, to function -1 return karta hai, iska matlab hai ki input vector mein koi duplicate nahi mila.

Summarily, `findDuplicate` function ek `set` ka istemal karke integers ke vector mein duplicate elements ko efficiently detect karne ke liye hota hai. Agar duplicate milta hai, to woh value return hoti hai; warna -1 return hota hai, jisse yeh bataya jata hai ki input vector mein koi duplicate nahi paya gaya.

--

--

Kartikeya Mishra

Computer science engineer nomad exploring digital world. Learning and teaching while having fun.