Array သည် Duplicates Allowed နှင့်အတူ Contiguous Integers ပါ ၀ င်သလားစစ်ဆေးပါ


ခက်ခဲအဆင့် အလယ်အလတ်
မကြာခဏမေးတယ် Accenture အမေဇုံ နေခြည် Facebook က အလိုလိုသိတတ်သော
အခင်းအကျင်း hash ကြိုး

မင်းကိုပေးထားတယ် အခင်းအကျင်း ထို့အပြင်ထပ်တူ element တွေပါနိုင်သည့်ကိန်း၏။ ပြstatementနာကဖော်ပြသည်မှာဆက်နွယ်နေသောကိန်းအစုတစ်ခုဟုတ်၊ မဟုတ်ဟုတ်ဟုတ်ဟုတ်ဟုတ်မဟုတ်ရိုက်ပါ၊ မဟုတ်သည်ကိုရိုက်ပါ။

နမူနာ

နမူနာထည့်သွင်းမှု -

[၂၊ ၃၊ ၄၊ ၁၊ ၇၊ ၉]

နမူနာရလဒ် -

Yes

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

၎င်းတွင် [2, 3, 4, 1] နံပါတ်၏တဆက်တည်းကိန်းအစုတခုရှိသည်။

ခင်းကျင်းထားသည့်ထပ်တူကျသောကိန်းများပါ ၀ င်သည်ကိုစစ်ဆေးရန် Algorithm ကိုစစ်ဆေးသည်

1. Declare a Set.
2. Add all the elements of an array into the Set.
3. Set count to 1 and currentElement to arr[0]-1.
4. Open a loop, while Set contains the currentElement.
  1. Do count++ and currentElement--.
5. Set currentElement to arr[0]+1.
6. Open a loop, while Set contains the currentElement.
  1. Do count++ and currentElement++.
7. Check if the count is equal to the size of a set, if condition satisfies, then return true.
8. Else return false.

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

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

ကျနော်တို့က array ထဲသို့ဖြတ်သန်းခြင်းအားဖြင့် element အားလုံးကိုထည့်သွင်းသွားကြသည် အစုံ နှင့်ယခုကွဲပြားဒြပ်စင်ရပါလိမ့်မယ်။ count ၏တန်ဖိုးကို 1 ထားပါ၊ နောက်လုပ်ငန်းဆောင်ရွက်မှုများတွင်၎င်းကို ဆက်လက်၍ တိုးပွားလာလိမ့်မည်။ ၎င်းသည်ကိန်းဂဏန်းများ၏တဆက်တည်းအစု၏အရွယ်အစားကိုစစ်ဆေးလိမ့်မည်။ အဘယ်ကြောင့်ဆိုသော်ခင်းကျင်းပြသမှု၌တဆက်တည်းဖြစ်သောကိန်းများမရှိပါက၎င်းသည် Set ထက်ကွဲပြားသောအရွယ်အစားရှိလိမ့်မည်။ arr [0] -1 သည် currentElement ၏တန်ဖိုးဖြစ်သည်။ ဒါဟာ၏အစုတခုတခုအပေါ်မှာမျက်စိစောင့်ရှောက်မည် ကိန်း.

ကွင်းဆက်တစ်ခုဖွင့်ပါ၊ ၎င်းတွင် Set တွင် currentElement မပါမချင်းဆက်သွားပါမည်။ အဘယ်ကြောင့်ဆိုသော် loop တစ်ခုတွင် count ၏တန်ဖိုးကို 1 (count = count + 1) တိုးမြှင့်ပြီး currentElement ၏တန်ဖိုးကို 1 (currentElement = currentElement) ကိုလျှော့ချသွားသောကြောင့်ဖြစ်သည်။ - 1) ။ currentElement ၏တန်ဖိုးကို arr [0] +1 သို့ သတ်မှတ်၍ အခြားကွင်းဆက်တစ်ခုဖွင့်ပါ။ Set တွင်၎င်းတွင် currentElement မရောက်မချင်းဆက်သွားမည်ဖြစ်သော်လည်းယခုအချိန်တွင်ကျွန်ုပ်တို့သည်တန်ဖိုးနှစ်ခုကို ၁ count ++ နှင့် currentElement ++ တိုးပွားလာလိမ့်မည်။ နောက်ဆုံးတွင် count ၏တန်ဖိုးသည် Set အရွယ်အစားနှင့်ညီမျှမှုရှိ၊ မရှိစစ်မှန်သည်ကိုတွေ့ရှိပါက true သို့ပြန်သွားပါ။ return false သို့ပြန်သွားပါမည်။

ဥပမာတစ်ခုကိုသုံးသပ်ကြည့်ကြစို့။

နမူနာ

arr [] = {5, 2, 3, 6, 4, 4, 6, 6};

ခင်းကျင်းပြီးတဲ့နောက်မှာ Set ထဲမှာအောက်ပါတန်ဖိုးတွေရပါလိမ့်မယ်။

Set: {2,3,4,5,6}, ကထပ်တူ element တွေကိုဖယ်ရှားအဖြစ်

Count = 1, currentElement = arr [0] -1 = 4;

  • Set တွင် currentElement (4) ရှိသော်လည်း၊

Count = count + 1 => count = 2, currentElement- => currentElement = 3

  • Set တွင် currentElement (3) ရှိသော်လည်း၊

Count = count + 1 => count = 3, currentElement- => currentElement = 2

  • Set တွင် currentElement (2) ရှိသော်လည်း၊

Count = count + 1 => count = 4, currentElement- => currentElement = 1

  • Set တွင် currentElement (1) သည် false ဖြစ်နေသောကြောင့်၎င်းသည် loop မှထွက်လာသည်။

currentElement [0] = arr [0] +1 => currentElement = 6 ကိုသတ်မှတ်ပါ

  • Set တွင် currentElement (6) ရှိသော်လည်း၊

Count = count + 1 => count = 5, currentElement ++ => currentElement = 7

  • Set တွင် currentElement (7) သည် false ဖြစ်နေသောကြောင့် loop မှထွက်လာသည်

ထို့အပြင် count သည် set ၏အရွယ်နှင့်ညီမျှမှုရှိမရှိနှင့်အခြေအနေသည်ကျေနပ်မှုရှိမရှိစစ်ဆေးသည်။ ၎င်းသည် true သို့ပြန်သွားလိမ့်မည်။ main function တွင် yes ပုံနှိပ်ပါလိမ့်မည်။

အကောင်အထည်ဖော်ရေး

ခွင့်ပြုချက်မိတ္တူပွားများနှင့်အတူတဆက်တည်းကိန်းပါရှိသည်ရှိမရှိစစ်ဆေး C ++ ကုဒ်

#include<iostream>
#include<unordered_set>
using namespace std;
bool areElementsContiguous(int arr[], int n)
{
    unordered_set<int> Set;
    for (int i = 0; i < n; i++)
        Set.insert(arr[i]);

    int count = 1;
    int currentElement = arr[0] - 1;
    while (Set.find(currentElement) != Set.end())
    {
        count++;
        currentElement--;
    }
    currentElement = arr[0] + 1;
    while (Set.find(currentElement) != Set.end())
    {
        count++;
        currentElement++;
    }
    return (count == (int)(Set.size()));
}
int main()
{
    int arr[] = { 5, 2, 3, 6, 4, 4, 6, 6 };
    int n = sizeof(arr) / sizeof(arr[0]);
    if (areElementsContiguous(arr, n))
        cout << "Yes, it is set of contiguous integers.";
    else
        cout << "No, it is not a set of contiguous integers.";
    return 0;
}
Yes, it is set of contiguous integers.

Java ကုဒ်သည်ထပ်တူများကိုခွင့်ပြုထားသောတဆက်တည်းကိန်းများပါမပါကိုစစ်ဆေးရန်

import java.util.HashSet;
class contiguousArray
{
    public static Boolean checkContiguousElements(int arr[], int n)
    {
        HashSet<Integer> set = new HashSet<Integer>();
        for (int i = 0; i < n; i++)
        {
            set.add(arr[i]);
        }
        int count = 1;
        int currentElement = arr[0] - 1;
        while (set.contains(currentElement) == true)
        {
            count++;
            currentElement--;
        }
        currentElement = arr[0] + 1;
        while (set.contains(currentElement) == true)
        {
            count++;
            currentElement++;
        }
        return (count == (set.size()));
    }
    public static void main(String[] args)
    {
        int arr[] = { 10, 7, 8, 11, 9, 9, 10, 10 };
        int n = arr.length;
        if (checkContiguousElements(arr, n))
            System.out.println("Yes, it is set of contiguous integers.");
        else
            System.out.println("No, it is not a set of contiguous integers.");
    }
}
Yes, it is set of contiguous integers.

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

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

အို (ဎ) ဘယ်မှာ “ n” သည် array အတွင်းရှိ element အရေအတွက်ဖြစ်သည်။

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

အို (ဎ) ဘယ်မှာ “ n” သည် array အတွင်းရှိ element အရေအတွက်ဖြစ်သည်။