Question :
An
array is defined to be a Filter array if it meets the following
conditions
a. If it contains 9 then it also contains
11.
b. If it contains 7 then it does not
contain 13.
So
{1, 2, 3, 9, 6, 11} and {3, 4, 6, 7, 14, 16}, {1, 2, 3, 4,
10, 11, 13} and {3, 6, 5, 5, 13, 6, 13} are Filter arrays. The following arrays
are not Filter arrays: {9, 6, 18} (contains 9 but no 11), {4, 7, 13}
(contains both 7 and 13)
Write
a function named isFilter that returns 1 if its array argument is a Filter
array, otherwise it returns 0.
If
you are programming in Java or C#, the function signature is
int
isFilter(int[ ] a)
If
you are programming in C or C++, the function signature is
int
isFilter(int a[ ], int len) where len is the number of elements in the
array.
public static int
isFilter(int [] a)
{
int result
= 1;
for(int i=0;i<a.Length;i++)
{
if(a[i]==9)
{
for(int j=0;j<a.Length;j++)
{
if(a[j]==11)
{
result = 1;
break;
}
else
{
result = 0;
}
}
}
if(a[i]==7)
{
for(int j=0;j<a.Length;j++)
{
if(a[j]==13)
{
result = 0;
break;
}
}
}
}
return result;
}
// O(N) Time | O(1) Space
ReplyDeletestatic int isFilter(int[] arr) {
boolean has9 = false;
boolean has11 = false;
boolean has7 = false;
boolean has13 = false;
for (int i = 0; i < arr.length; i++) {
if (arr[i] == 9)
has9 = true;
if (arr[i] == 11)
has11 = true;
if (arr[i] == 7)
has7 = true;
if (arr[i] == 13)
has13 = true;
}
if (has9 == true) {
if (has11 == true)
return 1;
else
return 0;
}
if (has7 == true) {
if (has13 == false)
return 1;
else
return 0;
}
return 1;
}
the solution has a problem
Deleteif the array contains 9, 11 7 and 13 at the same time it returns 1;
I corrected your function
Deletestatic int isFilter(int[] arr) {
boolean has9 = false, has11 = false, has7 = false, has13 = false ;
for (int i = 0; i < arr.length; i++) {
if (arr[i] == 9)
has9 = true;
if (arr[i] == 11)
has11 = true;
if (arr[i] == 7)
has7 = true;
if (arr[i] == 13)
has13 = true;
}
if (has9 )
if (! has11 )
return 0 ;
if (has7)
if (has13)
return 0 ;
return 1;
}