मान लीजिए कि हमारे पास (x, y) निर्देशांक वाले डेटा-बिंदुओं की एक सूची है, हमें यह जांचना होगा कि डेटा-बिंदु सीधी रेखा बना रहे हैं या नहीं। अतः यदि बिंदु [(1, 2), (2, 3), (3, 4), (4, 5), (5, 6), (6, 7)] जैसे हैं, तो वे सीधी रेखा बना रहे हैं ।
इसे हल करने के लिए, हम लगातार प्रत्येक डेटापॉइंट के बीच अंतर लेंगे, और ढलान का पता लगाएंगे। पहले वाले के लिए ढलान का पता लगाएं। अन्य सभी बिंदुओं के लिए जांचें कि ढलान समान है या नहीं। यदि वे समान हैं, तो बस सही लौटें, अन्यथा गलत
उदाहरण
आइए एक बेहतर समझ प्राप्त करने के लिए निम्नलिखित कार्यान्वयन देखें -
#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)