मान लीजिए कि हमारे पास n तत्वों के साथ एक सरणी A है। हम दी गई संख्याओं के किसी उपसमुच्चय का चयन करते हैं और इन संख्याओं को नकारते हैं। हमें प्राप्त होने वाले सरणी में अधिकतम विभिन्न मानों को खोजना होगा।
इसलिए, यदि इनपुट ए =[1, 1, 2, 2] जैसा है, तो आउटपुट 4 होगा, क्योंकि हम सरणी बनाने के लिए पहली और आखिरी संख्याओं को अस्वीकार कर सकते हैं [-1, 1, 2, -2] के साथ चार अलग-अलग मान।
कदम
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
Define one set se n := size of A for initialize i := 0, when i < n, update (increase i by 1), do: x := A[i] if x is present in se, then: insert -x into se Otherwise insert x into se return size of se
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
#include <bits/stdc++.h> using namespace std; int solve(vector<int> A) { set<int> se; int n = A.size(); for (int i = 0; i < n; i++) { int x = A[i]; if (se.count(x)) se.insert(-x); else se.insert(x); } return se.size(); } int main() { vector<int> A = { 1, 1, 2, 2 }; cout << solve(A) << endl; }
इनपुट
{ 1, 1, 2, 2 }
आउटपुट
4