मान लें हमारे पास (x, y) निर्देशांक वाले डेटा-पॉइंट्स की एक सूची है, हमें जांचना है कि डेटा-पॉइंट्स सीधी रेखा बना रहे हैं या नहीं। तो यदि बिंदु [(1, 2), (2, 3), (3, 4), (4, 5), (5, 6), (6, 7)] जैसे हैं, तो वे सीधी रेखा बना रहे हैं।
इसे हल करने के लिए, हम प्रत्येक क्रमागत डेटापॉइंट्स के बीच अंतर लेंगे, और ढलान ढूंढेंगे। पहले के लिए ढलान ढूंढें। अन्य सभी बिंदुओं के लिए जांचें कि ढलान समान है या नहीं। यदि वे समान हैं, तो बस true लौटाएं, अन्यथा false।
उदाहरण
बेहतर समझ के लिए निम्न कार्यान्वयन देखें −
#include <bits/stdc++.h> using namespace std; class Solution { public: int gcd(int a, int b){ return !b?a:gcd(b,a%b); } bool checkStraightLine(vector<vector<int>>& c) { bool ans =true; bool samex = true; bool samey = true; int a = c[1][0]-c[0][0]; int b = c[1][1]-c[0][1]; int cc = gcd(a,b); a/=cc; b/=cc; for(int i =1;i<c.size();i++){ int x = c[i][0]-c[i-1][0]; int y = c[i][1]-c[i-1][1]; int z = gcd(x,y); x/=z; y/=z; ans =ans &&(x == a )&& (y == b ); } return ans; } }; main(){ Solution ob; vector<vector<int>> c = {{1,2},{2,3},{3,4},{4,5},{5,6},{6,7}}; cout << ob.checkStraightLine(c); }इनपुट
[[1,2],[2,3],[3,4],[4,5],[5,6],[6,7]]
आउटपुट
1 (1 indicates true)