تحقق في المصفوفة الثنائية من أن الرقم الذي يمثله المصفوفة الفرعية فردي أو زوجي  


مستوى الصعوبة سهل
كثيرا ما يطلب في سيسكو القوات المسلحة البوروندية IBM Microsoft PayU Snapchat Snapdeal مقاومه
مجموعة بت

توضح مشكلة "التحقق من المصفوفة الثنائية أن الرقم الذي يمثله المصفوفة الفرعية فردي أو زوجي" أنه يتم منحك مصفوفة ثنائية ونطاقًا. تتكون المصفوفة من رقم على شكل 0 و 1. تطلب عبارة المشكلة معرفة الرقم الممثل في مصفوفة فرعية في النطاق [يسار ، يمين] زوجي أو فردي.

مثال  

arr[] = {1,1,1,0,1}
Left, right = 1, 4
Left, right = 0, 3
odd even

تفسير

يسار ، يمين = 1,4،1101 ، لذا سيكون الرقم 13 والذي سيكون XNUMX في الكسر العشري ، لذا فهو فردي.

يسار ، يمين = 0,3،1110 وهو ما يمثل الرقم 14 الذي سيكون XNUMX في الكسر العشري وهو رقم زوجي.

تحقق في المصفوفة الثنائية من أن الرقم الذي يمثله المصفوفة الفرعية فردي أو زوجيدبوس

 

خوارزمية  

  1. تحقق مما إذا كان فهرس الصفيف الأيمن هو 1 أو 0.
  2. إذا كانت 1 ، فمن الغريب طباعة فردي.
  3. إذا كانت تساوي 0 ، فستكون زوجية ، اطبعها.

تفسير  

للتحقق في المصفوفة الثنائية ، يكون الرقم الذي يمثله المصفوفة الفرعية فرديًا أو زوجيًا ، لدينا رقم ثنائي مجموعة. لذلك من المصفوفة الثنائية ، نقصد أن الرقم في المصفوفة سيكون في شكل 0 و 1 فقط. لدينا نطاق يتكون من نقطة بداية على الجانب الأيسر ونطاق نهاية على الجانب الأيمن. بين هذا النطاق ، سنحصل على مصفوفة فرعية من 0 و 1. تتحد هذه 0 و 1 لتشكيل رقم يمكن تفسيره بسهولة على أنه رقم عشري.

انظر أيضا
جعل حل Leetcode العظيم سلسلة

نفس الشيء الذي سنفعله مع هذه الاستعلامات ، لدينا نطاق. نظرًا لأنه يمكننا تمثيل الرقم الثنائي على أنه 0 و 1. إذا كان لدينا آخر بت من الرقم الثنائي باعتباره 1 ، فهذا يعني أن الرقم فردي. السبب هو أن البتة الأولى من أي رقم سيتم تمثيلها كرقم عشري في شكل 2. لذا مهما كان العدد الصحيح ولكن إذا كان آخر جزء من أي رقم ثنائي هو 1. فسيكون فرديًا ، وإذا كان آخر بت من الرقم الثنائي هو 0 ، فإن مضاعفة 20 مع 0 ، ينتج عنها 0 ، لذلك لا شيء يتغير هناك.

لذلك من أجل حل عملية التحقق في المصفوفة الثنائية ، يكون الرقم الذي يمثله المصفوفة الفرعية فرديًا أو زوجيًا لاستعلامات متعددة ، سنقوم بفحص الجزء الأخير من الرقم الثنائي ، ولكن يتعين علينا التحقق من المصفوفة الفرعية التي تم إنشاؤها في النطاق ، لذلك سوف نتحقق من قيمة المصفوفة [اليمنى] إذا كانت تساوي 1 ، فسيكون العدد الصحيح فرديًا ، وإلا فسيكون الرقم زوجيًا.

رمز  

C ++ للتحقق من الرقم الذي يمثله المصفوفة الفرعية هو عدد فردي أو زوجي

#include<iostream>

using namespace std;

void IsEvenOrOdd (int arr[], int n, int left, int right)
{
    if (arr[right] == 1)
        cout << "odd" << endl;
    else
        cout << "even" << endl;
}
int main()
{
    int arr[] = {1,1,1,0,1};
    int n = sizeof(arr)/sizeof(arr[0]);
    IsEvenOrOdd (arr, n, 1, 4);
    IsEvenOrOdd (arr, n, 0, 3);
    return 0;
}
odd
even

كود Java للتحقق من الرقم الذي يمثله المصفوفة الفرعية هو فردي أو زوجي

class BinaryOddEven
{
    static void IsEvenOrOdd (int arr[], int n, int left, int right)
    {
        if (arr[right] == 1)
            System.out.println( "odd") ;
        else
            System.out.println ( "even") ;
    }
    public static void main (String[] args)
    {
        int arr[] = {1,1,1,0,1};
        int n = arr.length;
        IsEvenOrOdd (arr, n, 1, 4);
        IsEvenOrOdd (arr, n, 0, 3);

    }
}
odd
even

تحليل التعقيد  

تعقيد الوقت

يا (ف) أين "Q" هو عدد الاستعلامات التي يتعين علينا إجراؤها. لأنه يمكن الإجابة على كل استفسار في الوقت O (1) التعقيد.

انظر أيضا
ابحث عن العنصر المكرر

تعقيد الفضاء

يا (1) حيث لا توجد مساحة إضافية مطلوبة. وبالتالي فإن تعقيد مساحة التحقق في المصفوفة الثنائية يكون الرقم الذي يمثله المصفوفة الفرعية فرديًا أو ثابتًا.