मान लीजिए कि हमारे पास 2D तल पर n बिंदु हैं, हमें यह जांचना है कि क्या y-अक्ष के समानांतर कोई रेखा है जो दिए गए बिंदुओं को सममित रूप से दर्शाती है, दूसरे शब्दों में, जांचें कि क्या कोई ऐसी रेखा मौजूद है जो दी गई रेखा पर सभी बिंदुओं को प्रतिबिंबित करने के बाद मूल बिंदुओं का सेट वही होता है जो प्रतिबिंबित होता है।
इसलिए, यदि इनपुट पॉइंट्स की तरह है =[[1,1],[-1,1]]
तब आउटपुट सही होगा
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
एक सेट को ठीक परिभाषित करें
-
n :=बिंदुओं का आकार
-
minVal :=inf
-
मैक्सवैल :=-इन्फ
-
इनिशियलाइज़ i:=0 के लिए, जब i
-
minVal :=न्यूनतम minVal और अंक[i, 0]
-
maxVal :=अधिकतम अधिकतम वैल और अंक[i, 0]
-
पॉइंट्स [i] को ओके में डालें
-
-
मध्य:=मैक्सवैल + मिनवैल
-
इनिशियलाइज़ i:=0 के लिए, जब i
-
एक्स:=अंक [i, 0]
-
y:=अंक[i, 1]
-
x :=मध्य - x
-
अगर { x, y } ठीक नहीं है, तो -
-
झूठी वापसी
-
-
-
सही लौटें
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
#include <bits/stdc++.h> using namespace std; class Solution { public: bool isReflected(vector<vector<int<>& points) { set<vector<int< > ok; int n = points.size(); int minVal = INT_MAX; int maxVal = INT_MIN; for (int i = 0; i < n; i++) { minVal = min(minVal, points[i][0]); maxVal = max(maxVal, points[i][0]); ok.insert(points[i]); } int mid = maxVal + minVal; for (int i = 0; i < n; i++) { int x = points[i][0]; int y = points[i][1]; x = mid - x; if (!ok.count({ x, y })) return false; } return true; } }; main(){ Solution ob; vector<vector<int<> v = {{1,1},{-1,1}}; cout << (ob.isReflected(v)); }
इनपुट
{{1,1},{-1,1}}
आउटपुट
1