ပေးထားသောထုတ်ကုန်နှင့်အတူတွဲ


ခက်ခဲအဆင့် အလယ်အလတ်
မကြာခဏမေးတယ် 24 * 7 တီထွင်မှု Labs အမေဇုံ Avalara Quora Roblox
အခင်းအကျင်း hash သင်္ချာ

ပြgivenနာ“ ပေးထားသောထုတ်ကုန်နှင့်တွဲဖက်မှု” ကသင့်အားပေးသည်ဟုဖော်ပြထားသည် ကိန်း အခင်းအကျင်း နှင့်နံပါတ် "x" ။ ပေးထားသော input array တွင် 'x' နှင့်ညီမျှသောထုတ်ကုန်တစ်စုံပါ ၀ င်မှုရှိ / မရှိကိုဆုံးဖြတ်ပါ။

နမူနာ

[2,30,12,5]
x = 10
Yes, it has Product Pair

ရှင်းလင်းချက်

ပေးထားသောထုတ်ကုန်နှင့်အတူတွဲ

ဒီမှာ 2 နှင့် 5 သည်ထုတ်ကုန် ၁၀ နှင့်ညီသည်။ x ဖြစ်သည်။

[10,30,12,50]
x = 40
No, it does not have a Product Pair.

ရှင်းလင်းချက်

ထုတ်ကုန် x သည်ဆိုလိုသည်မှာ ၄၀ နှင့်ညီမျှသည့်ခင်းကျင်းမှုတွင်ထိုကဲ့သို့သောအတွဲမရှိပါ။

[20,3,12,5]
x = 100
Yes, it has a Product Pair.

ရှင်းလင်းချက်

ဒီနေရာတွင်ခင်းကျင်းနေသော 20 နှင့် 5 သည်ထုတ်ကုန် x ကိုဆိုလိုသည်၊ ၁၀၀ ဖြစ်သည်။

ပေးထားသောထုတ်ကုန်နှင့်အတူ Pair ရှိမရှိရှာရန် Algorithm

  1. a) ကြေညာပါ HashSet.
  2. အနည်းဆုံး 2 တန်ဖိုးများပေးထားလျှင်ခင်းကျင်း၏အရှည်ကိုစစ်ဆေးပါ။
    1. မရရှိလျှင်, false ကိုပြန်သွားပါ။
  3. စဉ် i <n.
    1. Array ရဲ့ element တစ်ခုက ၀ နဲ့ညီလားဆိုတာစစ်ဆေးပါ
      1. အကယ်၍ x ကိုလည်း 0 ပေးရင် true ပြန်လာပါ။
    2. x သည် arr ၏မည်သည့်အရာမှမဆိုခွဲခြားနိုင်ပြီးကျန်ရှိသော 0 ကိုပေးသည်လားစစ်ဆေးပါ။
      1. HashSet တွင် (x / arr [i]) ပါ ၀ င်ခဲ့ပါက true သို့ပြန်သွားပါ။
      2. arr [i] ကို HashSet တွင်ထည့်ပါ။
  4. return false ။

ရှင်းလင်းချက်

ကျွန်ုပ်တို့အားပြarrayနာတစ်ခုပေးထားပြီး၎င်းကို array နှင့်နံပါတ်ပေးထားသည်။ ထို့နောက်ထုတ်လုပ်မှု x နှင့်ညီသောကုန်စည်တစ်ခုပါရှိသည့် input array တွင်မည်သည့် pair တစုံတခုရှိသလဲဆိုသည်ကိုကျွန်ုပ်တို့ရှာဖွေရမည်။ ငါတို့သုံးမယ် ဟေး ဒီပြproblemနာကိုဖြေရှင်းဖို့။ ပေးထားသောကုန်ပစ္စည်းနှင့်အတူခင်းကျင်းထဲမှာတည်ရှိသောတန်ဖိုးကိုရှာဖွေရန်။ x ကို arr [i] နဲ့စားပြီးကျန်တဲ့ 0 ဆိုတာဟုတ်လားစစ်ဆေးပါ။ 0 ဖြစ်မယ်ဆိုရင် HashSet မှာ x / arr [i] ရှိသလားဆိုတာစစ်ဆေးပါလိမ့်မယ်။ တကယ်လို့ရှိရင်၊ မရရှိလျှင်ထပ်မံဖြတ်သန်းရန်အတွက်ထို element array ကို HashSet ထဲသို့ထည့်ပါ။

ကျွန်ုပ်တို့မှကုန်ပစ္စည်းသုညကိုတိတိကျကျစစ်ဆေးရန်ဖြစ်သောအခြေအနေကိုကျွန်ုပ်တို့အားပေးထားသည်။ အကယ်၍ ကျွန်ုပ်တို့၏ x တန်ဖိုးကို 0 အဖြစ်ပေးခဲ့လျှင် array ၏ element တစ်ခုမှ 0 ဖြစ်မဖြစ်စစ်ဆေးပါမည်။ ဟုတ်လျှင်မှန်လျှင်ကျွန်ုပ်တို့ပြန်သွားပါမည်။

ဥပမာတစ်ခုယူပြီးဤအရာကိုနားလည်ကြပါစို့။

arr [] = {10,20,9,40}, X ကို = 90

i = 0, arr [i] = 10,

arr [i] သည် 0 လားမှန်မမှန်စစ်ဆေးပါမည်။ သို့သော်၎င်းခင်းကျင်းခြင်းတွင်ဒြပ်စင်တစ်ခုတည်းက 0 မပါရှိခြင်းကိုစစ်ဆေးသည်။

ဒီနေရာမှာ x% arr [i] = = 0 ရှိမရှိစစ်ကြည့်ပါက x / arr [i] အစုံရှိ၊ မရှိကိုစစ်ဆေးပါလိမ့်မယ်။

90% 10 == 0 သည်မှန်ပြီး 90/10 = 9 သည် HashSet တွင်မရှိသေးပါ။

ဒီတော့ arr [i] = 10 ကို set ထဲထည့်မယ်။

90% 20 == 0 သည်မမှန်ပါ

90% 9 == 0 သည်မှန်ကန်ပြီး 90/9 = 10 ကို HashSet တွင်ကျွန်ုပ်တို့ထည့်ပြီးပါပြီ။

ဆိုလိုတာကကျွန်တော်တို့မှာ Product pair 9 နဲ့ 10 လိုခင်းကျင်းထားတဲ့ array ထဲမှာရှိပြီး true နဲ့ print ထုတ်ပေးတယ်

ရလဒ် -“ ဟုတ်တယ်၊ ထုတ်ကုန်တွဲဖက်ထားတယ်။ ” ။

ပေးထားသော productAmazon နှင့်တွဲဖက်ရန် C ++ ကုဒ်ကို

#include<iostream>
#include<unordered_set>
using namespace std;
bool getProduct (int arr[], int n, int x)
{
  if (n < 2)
    return false;

  unordered_set<int> s;

  for (int i=0; i<n; i++)
  {
    if (arr[i] == 0)
    {
    if (x == 0)
      return true;
    else
      continue;
    }
    if (x%arr[i] == 0)
    {
      if (s.find(x/arr[i]) != s.end())
                return true;

      s.insert(arr[i]);
    }
  }
  return false;
}
int main()
{
  int arr[] = {10, 20, 9, 40};
  int x = 90;
  int n = sizeof(arr)/sizeof(arr[0]);
  getProduct (arr, n, x)? cout << "Yes, it has Product Pair\n":cout << "No, it does not have Product Pair";
  return 0;
}
Yes, it has Product Pair

ပေးထားသောထုတ်ကုန်နှင့်အတူ Pair ကိုရှာဖွေ Java code ကို

import java.util.HashSet;

class pairX
{
    public static boolean getProduct (int arr[], int n, int x)
    {
        HashSet<Integer> mySet = new HashSet<>();

        if(n < 2)
            return false;

        for(int i = 0; i < n; i++)
        {
            if(arr[i] == 0)
            {
                if(x == 0)
                    return true;
                else
                    continue;
            }
            if(x % arr[i] == 0)
            {
                if(mySet.contains(x / arr[i]))
                    return true;

                mySet.add(arr[i]);
            }
        }
        return false;
    }
    public static void main(String[] args)
    {
        int arr[] = {10, 20, 9, 40};
        int x = 90;
        int n = arr.length;

        if(getProduct (arr, n, x))
            System.out.println("Yes, it has Product Pair");
        else
            System.out.println("No, it does not have Product Pair");
    }
}
Yes, it has Product Pair

ရှုပ်ထွေးဆန်းစစ်ခြင်း

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

အို (ဎ) ဘယ်မှာ “ n” သည် array အတွင်းရှိ element အရေအတွက်ဖြစ်သည်။ HashSet ကိုကျွန်ုပ်တို့အသုံးပြုခဲ့ချိန် မှစ၍ ကျွန်ုပ်တို့သည် O (1) အချိန်အတွင်းထည့်သွင်းခြင်း၊ ဖျက်ခြင်းနှင့်ရှာဖွေခြင်းများကိုပြုလုပ်နိုင်သည်။ ဘာဖြစ်လို့လဲဆိုတော့ကျနော်တို့က linear အချိန်ရှုပ်ထွေးအောင်မြင်ရန်နိုင်ခဲ့ကြတယ်။

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

အို (ဎ) ဘယ်မှာ “ n” သည် array အတွင်းရှိ element အရေအတွက်ဖြစ်သည်။ element အားလုံးကို HashSet ထဲမှာသိမ်းထားမယ်ဆိုရင် N term များပါလိမ့်မယ်။ ဒါကကျွန်တော်တို့ကို linear အာကာသကုန်ကျပါလိမ့်မယ်။ ဘာဖြစ်လို့လဲဆိုတော့ input ကိုအာကာသတိုးပွါးအဖြစ်။