मान लीजिए कि हमारे पास पूर्णांकों की एक सरणी है, श्रेणी 1 ≤ a[i] ≤ n (n =सरणी का आकार) में, यहां कुछ तत्व दो बार दिखाई देते हैं और अन्य एक बार दिखाई देते हैं। हमें इस सरणी में दो बार आने वाले सभी तत्वों को खोजना है। तो अगर सरणी [4,3,2,7,8,2,3,1] है, तो आउटपुट [2, 3]
होगाइसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- n :=सरणी का आकार, एक सरणी बनाएं जिसे ans कहा जाता है
- मैं के लिए 0 से n - 1 की सीमा में
- x :=अंकों का निरपेक्ष मान[i]
- x को 1 से घटाएं
- अगर nums[x] <0, तो x + 1 को ans में जोड़ें, अन्यथा nums[x] :=nums[x] * (-1)
- वापसी उत्तर
उदाहरण(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> findDuplicates(vector<int>& nums) { int n = nums.size(); vector <int> ans; for(int i = 0; i < n; i++){ int x = abs(nums[i]); x--; if(nums[x] < 0) ans.push_back(x + 1); else nums[x] *= -1; } return ans; } }; main(){ Solution ob; vector<int> v = {4,3,2,7,8,2,3,1}; print_vector(ob.findDuplicates(v)); }
इनपुट
[4,3,2,7,8,2,3,1]
आउटपुट
[2,3]