သက်တမ်းရှိ Boomerang Leetcode ဖြေရှင်းချက်


ခက်ခဲအဆင့် လွယ်ကူသော
မကြာခဏမေးတယ် Google
သင်္ချာ

ပြProbleနာဖော်ပြချက်

ဤပြproblemနာတွင်ကျွန်ုပ်တို့အား XY 2-D လေယာဉ်တစ်စင်းတွင်အချက်သုံးချက်ထားရှိသည်။ ကျနော်တို့သူတို့က boomerang ဖွဲ့စည်းသို့မဟုတ်မဖြစ်စေပြန်လာရန်လိုအပ်သည်, သူတို့ကသူတို့သုံးခုရှိမရှိ ကွဲပြား အချက်များနှင့်လုပ်ပါ မဟုတ် မျဉ်းဖြောင့်ဖြစ်စေသည်။

နမူနာ

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

ပထမ input သည်အချက် ၃ ခုအနက်နှစ်ခုတူညီသည်။ ထို့ကြောင့်၎င်းသည်ခိုင်မာသည့် boomerang မဟုတ်သောကြောင့်ကျွန်ုပ်တို့သည် false ကိုပုံနှိပ်သည်။ ဒုတိယစာမေးပွဲတွင်အချက် ၃ ချက်ရှိသည်။ ၎င်းကိုဖြောင့်သောမျဉ်းကြောင်းမရှိသောကြောင့်ကျွန်ုပ်တို့သည်စစ်မှန်သည်။

သက်တမ်းရှိ Boomerang Leetcode ဖြေရှင်းချက်

ချဉ်းကပ်နည်း (Slope Test)

ပြtheနာ၌ ဒါဟာဖြောင့်လိုင်းမှန်လျှင်စစ်ဆေးပါ, ကျွန်ုပ်တို့လေ့လာခဲ့ပြီးအချက် (၂) ချက်စီမှဖွဲ့စည်းထားသောမျဉ်း၏ slope သည်အတူတူဖြစ်ပါကကွဲပြားသောအချက် (၃) ခုသည် collinear ဖြစ်သည်။ ဒီမှာကျွန်တော်တို့စစ်ဆေးဖို့လိုသည်

  • အချက်များကွဲပြားလျှင်
  • အချက်များသည်မျဉ်းဖြောင့်ပေါ်တွင်မတည်ပါ

အချက်တစ်စုံတစ်ရာသည်အတူတူဖြစ်ပါက ၂ မှတ် (သို့မဟုတ်အချက်တစ်ခုတည်း) သည် collinear ဖြစ်သဖြင့်ပေးထားသော input သည် collinearity test ကိုဖြတ်သွားလိမ့်မည်။ ဒါကြောင့် slope slope ကိုစစ်ဆေးဖို့လိုတယ်။ မည်သည့်အချက်သုံးချက်မဆို P2, P1 နှင့် P2 တို့သည် collinear ဖြစ်ပါကကျွန်ုပ်တို့တွင်ရှိသည်

(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 ကိုသြဒီနိတ်များဖြစ်သည်။

algorithm

  1. dx1 = ခြားနားချက်ကိုစတင်ပါ x-coordinates ပထမအချက်နှစ်ချက်နှင့်ခြားနားချက် dy1 = y-coordinates ပထမ ဦး ဆုံးအချက်နှစ်ချက်၏
  2. အလားတူစွာ၊ dx2 = ခြားနားချက်ကိုသိမ်းထားပါ y-coordinates ပြီးခဲ့သည့်နှစ်မှတ်၏ dy2 = ခြားနားချက် y-coordinates နောက်ဆုံးနှစ်ခုအချက်များ၏
  3. လျှင် ((dx1 * dy2)! = (dx2 * dy1)) (သို့ပြန်သွားပါ)ဆင်ခြေလျှောစမ်းသပ်မှု အခြေအနေ)
  4. ရလဒ်ပုံနှိပ်ပါ

Valid Boomerang Leetcode Solution ၏အကောင်အထည်ဖော်မှု

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;
}

Java အစီအစဉ်

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

Valid Boomerang Leetcode Solution ၏ရှုပ်ထွေးမှုအားသုံးသပ်ခြင်း

အချိန်ရှုပ်ထွေး

အို (၁) ကျနော်တို့စစ်ဆင်ရေးတစ်ခုစဉ်ဆက်မပြတ်အရေအတွက်ကလုပ်ဆောင်အဖြစ်။

အာကာသရှုပ်ထွေးမှု

အို (၁) ကျနော်တို့စဉ်ဆက်မပြတ်မှတ်ဉာဏ်အာကာသကိုသုံးပါအဖြစ်။