Sunday 24 December 2017

Define an array to be a 121 array if all its elements are either 1 or 2 and it begins with one or more 1s followed by a one or more 2s and then ends with the same number of 1s that it begins with. Write a method named is121Array that returns 1 if its array argument is a 121 array, otherwise, it returns 0.

If you are programming in Java or C#, the function signature is
int is121Array(int[ ] a)

If you are programming in C or C++, the function signature is
int is121Array(int a[ ], int len) where len is the number of elements in the array a.

Examples
a is
then function returns
reason
{1, 2, 1}
1
because the same number of 1s are at the beginning and end of the array and there is at least one 2 in between them.
{1, 1, 2, 2, 2, 1, 1}
1
because the same number of 1s are at the beginning and end of the array and there is at least one 2 in between them.
{1, 1, 2, 2, 2, 1, 1, 1}
0
Because the number of 1s at the end does not equal the number of 1s at the beginning.
{1, 1, 2, 1, 2, 1, 1}
0
Because the middle does not contain only 2s.
{1, 1, 1, 2, 2, 2, 1, 1, 1, 3}
0
Because the array contains a number other than 1 and 2.
{1, 1, 1, 1, 1, 1}
0
Because the array does not contain any 2s
{2, 2, 2, 1, 1, 1, 2, 2, 2, 1, 1}
0
Because the first element of the array is not a 1.
{1, 1, 1, 2, 2, 2, 1, 1, 2, 2}
0
Because the last element of the array is not a 1.
{2, 2, 2}
0
Because there are no 1s in the array.

 public static int is121Array(int[] a)
        {
            int is121 = 1;
            int fristonecount = 0, secondonecount = 0, twocount = 0;
            int prevelement = 0;
            int changecount = 0;
            int firstelement = a[0];
            if (firstelement != 1) is121 = 0;
            for (int i = 0; i < a.Length && is121 == 1; i++)
            {
                
                if (a[i] == 2)
                    twocount++;

                if (prevelement != a[i])
                    changecount++;

                if (changecount == 1)
                    if (a[i] == 1)
                        fristonecount++;
                if (changecount == 3)
                    if (a[i] == 1)
                        secondonecount++;
                if (changecount > 3)
                    is121 = 0;

                prevelement = a[i];
            }
            if (twocount < 1)
                is121 = 0;
            if (fristonecount != secondonecount)
                is121 = 0;
            return is121;

        }

0 comments:

Post a Comment

Powered by Blogger.

Followers

Translate

Currency Converter

Exchange Rate

Featured post

Interpolation in angular 5

When we want to communicate from component class to template ,we can use interpolation which use the { { expression }} to render the bound...

Popular Posts

My Facebook Page