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