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