د بومرانګ لیټکوډ حل


مشکل کچه په اسانۍ سره
په مکرر ډول دننه پوښتل کیږي د ګوګل
ریاضی

ستونزه بیان

پدې ستونزه کې ، موږ ته په XY 2-D الوتکه کې د دریو ټکو سیټ راکول کیږي. موږ بیرته راستنیدو ته اړتیا لرو که چیرې دوی بومرانګ رامینځته کړي یا نه ، دا هغه څه دي چې دا درې دي جلا ټکي او وکړئ نه يوه مستقيم ليکه جوړه کړئ.

بېلګه

Points = {{1 , 2} , {2 , 6} , {1 , 2}}
false
Points = {{1 , 1} , {2 , 3} , {6 , 7}}
true

لومړی ان پټ د 3 څخه دوه ورته ټکي لري ، نو دا معتبر بومرانګ ندی او موږ غلط چاپ کوو. دوهمه ازموینه 3 بیلابیل ټکي لري چې مستقیم کرښه نه جوړوي او موږ ریښتیني چاپ کوو.

د بومرانګ لیټکوډ حل

طرزالعمل

په ستونزه کې وګوره که دا مستقیم خط دی، موږ زده کړل چې درې ځانګړي ټکي یوازې کولینلر دي که چیرې د هرې نقطې جوړه شوې کرښې جوړه ورته وي. دلته ، موږ چیک کولو ته اړتیا لرو:

  • که ټکي مختلف وي
  • ټکي په مستقیم خط کې نه راځي

که چیرې د ټکو یو جوړه ورته وي ، نو ورکړل شوي آخذه به د تخصص ازموینه کې بریالي کیږي ، ځکه چې هر دوه ټکي (یا یو ټکي) تل د تلیفون دي. نو ، موږ یوازې د سلاو مساواتو لپاره چیک کولو ته اړتیا لرو. په یاد ولرئ که چیرې کوم درې ټکي ، P2 ، P1 او P2 پرتې وي ، موږ لرو

(y2 - y1): (x2 - x1) :: (y3 - y2): (x3 - x2) ، یا

(y2 - y1) * (x3 - x2) = (x2 - x1) * (y3 - y2)

چیرې چې x1 ، x2 ، x3 ، y1 ، y2 ، y3 د P1 ، P2 او P3 اړونده X او t کوارډینات دي.

الګوریتم

  1. dx1 = توپیر پیل کړئ x - همغږي د لومړي دوه ټکو او dy1 = توپیر y- همغږي د لومړي دوه ټکو
  2. په ورته ډول ، ذخیره dx2 = توپیر y- همغږي د وروستي دوه ټکو او dy2 = توپیر y- همغږي د وروستي دوه ټکو
  3. بیرته راګرځئ که ((dx1 * dy2)! = (dx2 * dy1)) (د ورخ امتحان حالت)
  4. پایله چاپ کړئ

د درست بومرانګ لیټکوډ حل پلي کول

C ++ برنامه

#include <bits/stdc++.h>
using namespace std;

bool isBoomerang(vector <vector <int> > &points)
{
    int dx1 = (points[1][0] - points[0][0]);
    int dy1 = (points[1][1] - points[0][1]);
    int dx2 = (points[2][0] - points[1][0]);
    int dy2 = (points[2][1] - points[1][1]);

    return (dx1 * dy2) != (dy1 * dx2);
}

int main()
{
    vector <vector <int> > points = {{1 , 1} , {2 , 3} , {6 , 7}};
    if(isBoomerang(points))
        cout << "true\n";
    else
        cout << "false\n";
    return 0;
}

جاوا پروګرام

class valid_boomerang
{
    public static void main(String args[])
    {
        int[][] points = {{1 , 1} , {2 , 3} , {6 , 7}};
        if(isBoomerang(points))
            System.out.println("true");
        else
            System.out.println("false");
    }

    static boolean isBoomerang(int[][] points)
    {
        int dx1 = (points[1][0] - points[0][0]);
        int dy1 = (points[1][1] - points[0][1]);
        int dx2 = (points[2][0] - points[1][0]);
        int dy2 = (points[2][1] - points[1][1]);

        return (dx1 * dy2) != (dy1 * dx2);
    }
}
true

د معتبر بومرانګ لیټکوډ حل تحلیل

د وخت پیچلتیا

O (1) لکه څنګه چې موږ دوامداره عملیات ترسره کوو.

د ځای پیچلتیا

O (1) لکه څنګه چې موږ دوامداره حافظه ځای کاروو.