ပုံတူပွားပါဝင်သည်


ခက်ခဲအဆင့် လွယ်ကူသော
မကြာခဏမေးတယ် Adobe က အမေဇုံ Apple
အခင်းအကျင်း တားဆီးခြင်း

ကျွန်တော်တို့ကိုပေးထားတယ် အခင်းအကျင်း နှင့်၎င်းသည်ထပ်တူများပါသောအရာများသို့မဟုတ်မပါဝင်ခြင်းဖြစ်နိုင်သည်။ ဒါကြောင့်ကျနော်တို့ကထပ်တူပါရှိသည်ရှိမရှိစစ်ဆေးရန်လိုအပ်သည်။

ဥပမာ

ပုံတူပွားပါဝင်သည်

[1, 3, 5, 1]
true
[“apple”, “mango”, “orange”, “mango”]
true
[22.0, 4.5, 3.98, 45.6, 13.54]
false

ချဉ်းကပ်နည်း

ထပ်တူများပါမပါကိုစစ်ဆေးရန်နည်းလမ်းများစွာအားစစ်ခင်းကျင်းနိုင်သည်။ အသုံးအများဆုံးနည်းလမ်းမှာ“ Brute Force method” ဖြစ်သည်။ သို့သော်၎င်းသည် O (n) ၏အချိန်ရှုပ်ထွေးမှုရှိသည်2) နှင့်သာပညာရေးဆိုင်ရာရည်ရွယ်ချက်များအတွက်ကောင်းလှ၏။ သို့သော်အခက်အခဲနည်းသော Hash set method (သို့)“ Hash table method” သည်အချိန်နည်းနည်းဖြင့်ကျွန်ုပ်တို့၏ပြweနာကိုဖြေရှင်းရန်အခြားကျွန်ုပ်တို့ဤနည်းသည်“ Brute Force method” ထက်များစွာပိုမိုထိရောက်သည်။ Hash Set နည်းလမ်းသည် O (n) ၏အချိန်ရှုပ်ထွေးမှုကိုကြာစေသည်။

Hash သတ်မှတ်နည်းလမ်း

ဤနည်းသည်အခြားသူများထက် ပို၍ ရိုးရှင်းလွယ်ကူပြီးအကျိုးရှိသည်။ ထိုအစုံတွင်မိတ္တူပွားများမပါ ၀ င်ပါ။ ဆိုလိုသည်မှာကျွန်ုပ်တို့သည်ထပ်နေသောတန်ဖိုးကိုထပ်ထည့်ပါကအမှားတစ်ခုဖြစ်လိမ့်မည်။ ဤနည်းလမ်းကိုကျွန်ုပ်တို့အသုံးပြုပါကကျွန်ုပ်တို့အားကွင်းဆက်ဒြပ်ထုအပေါ်ကွင်းဆက်သာလုပ်လိုက်ပါ။ ထိုအခါအစု၏အရွယ်အစားနှင့်ခင်းကျင်းပြသပါ။ ၎င်းသည်သတ်မှတ်ခြင်းနှင့်မတူပါက၎င်းတွင်ခင်းကျင်းချက်သည်အခြားထပ်တူများမပါဝင်ပါ။

algorithm

  1. ပထမ ဦး စွာအငြင်းပွားမှုတစ်ခုအဖြစ်ခင်းကျင်းသော function တစ်ခုကိုကျွန်ုပ်တို့ဖန်တီးသည်။
  2. ထို့နောက်ကျွန်ုပ်တို့၏ function တွင် array တစ်ခု၏တန်ဖိုးအားလုံးပါ ၀ င်သော set တစ်ခုကိုဖန်တီးသည်။
  3. SET သည်ပုံတူပွားများကိုခွင့်မပြုပါ။ ဆိုလိုသည်မှာခင်းကျင်းချက်တွင်ထပ်တူများပါရှိပါက၎င်း၏အရွယ်အစားသည်သတ်မှတ်ထားသည့်အရွယ်ထက်ကွဲပြားလိမ့်မည်။
  4. နောက်ဆုံးအနေဖြင့် array နှင့် set နှစ်ခုလုံး၏အရွယ်အစားကိုနှိုင်းယှဉ်သည်။ သူတို့ရဲ့အရွယ်အစားမှာကွာခြားချက်ရှိရင် array မှာမူထပ်တူများပါဝင်သည်။ ဒြပ်စင်အားလုံးကွဲပြားသည်။

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

ကျွန်ုပ်တို့၏ပရိုဂရမ်တွင်ကျွန်ုပ်တို့သည်ထပ်တူများကိုစစ်ဆေးရန် hash set ကိုအသုံးပြုသည်။ ဦး စွာ၊ စစ်ဆေးရန် function တစ်ခုပြုလုပ်မည်။ ၎င်းတွင်ကျွန်ုပ်တို့သည် hash set တစ်ခုကိုပြုလုပ်ပြီး၎င်းကို array ၏တန်ဖိုးအားလုံးပေးလိမ့်မည်။ ထို့နောက်ထိုအစုသည်၎င်းတွင်ပါရှိသည့်မိတ္တူများကိုဖယ်ရှားပြီး၎င်းသည်အစု၏အရွယ်အစားကိုထိခိုက်လိမ့်မည်မဟုတ်ပါ။

ခင်းကျင်းပြသမှုများပါရှိမရှိစစ်ဆေးရန် C ++ ကုဒ်

#include <iostream>
#include <unordered_set>
using namespace std;

bool contain_duplicate(int arr[], int n)
{
    unordered_set<int> myset;
    bool flag = 0;

    for (int i = 0; i < n; i++)
    {
        if (myset.find(arr[i]) == myset.end())
            myset.insert(arr[i]);

        else
        {
            flag = 1;
            break;
        }

    }
    return flag;
}
int main()
{
    int arr[] = {1, 5, 2, 4, 3, 7, 8, 9, 1};
    int n = sizeof(arr) / sizeof(int);

    cout<< boolalpha <<contain_duplicate(arr, n);
    return 0;
}
true

Array တွင်ထပ်တူများပါရှိမရှိစစ်ဆေးရန် Java code

import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;

class contain_duplicate
{

    public static boolean solution(Integer [] array)
    {

        Set<Integer> myset = new HashSet<> (Arrays.asList(array));

        if(array.length!=myset.size())
        {
            return true;
        }
        else
        {
            return false;
        }
    }

    public static void main(String[] args)
    {
        Integer [] array = { 1, 2, 3, 6, 4, 9, 8, 1};
        System.out.println(solution(array));

    }
}
true

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

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

အို (n) သည် 'n' သည် array ၏အရွယ်အစားဖြစ်သည်။

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

အို ()) သည် hash table မှအသုံးပြုသောအာကာသသည်၎င်းတွင်ရှိသည့်ဒြပ်စင်အရေအတွက်နှင့်ညီသည်။