Home > Software design >  How to include a check in code needed to pass a particular test case?
How to include a check in code needed to pass a particular test case?

Time:06-14

Following is the Problem: Given an array arr of integers, check if there exists two integers N and M such that N is the double of M ( i.e. N = 2 * M).

More formally check if there exists two indices i and j such that :

i != j 0 <= i, j < arr.length arr[i] == 2 * arr[j]

Example 1:

Input: arr = [10,2,5,3] Output: true Explanation: N = 10 is the double of M = 5,that is, 10 = 2 * 5. Example 2:

Input: arr = [7,1,14,11] Output: true Explanation: N = 14 is the double of M = 7,that is, 14 = 2 * 7. Example 3:

Input: arr = [3,1,7,11] Output: false Explanation: In this case does not exist N and M, such that N = 2 * M.

Constraints:

2 <= arr.length <= 500 -10^3 <= arr[i] <= 10^3

My Solution

    class Solution {
        public boolean checkIfExist(int[] arr) {
            int [] arr2 = new int[arr.length];

            boolean answer= false;
            for (int i = 0; i < arr.length; i  ) {
                arr2[i]=2*arr[i];
            }

            for (int i = 0; i < arr.length; i  ) {
                for (int j = arr.length-1; j >= 0; j--) {

                    if((arr[i]) == arr2[j]){ 
                        answer=true;
                        break;
                    }
                }

            }
            return answer;
        }
    }

When the input array is [-2,0,10,-19,4,6,-8] the test case fails, because of the 0 in the 2nd index is doubled but when there is a 0 in any place it should be ignored.

CodePudding user response:

adding arr[i] != 0 to your if statement will skip over any 0 Here is an example

var arr = [10, 4, 8, 5, 16, 0]

for(var i=0; i < arr.length; i  ) {
  for(var j=0; j < arr.length; j  ){
    if(arr[i] != 0 && arr[i] * 2 == arr[j])
        console.log(arr[i], arr[j])
  }
}

Hope that helps

CodePudding user response:

The corrected Solution is

class Solution {
        public boolean checkIfExist(int[] arr) {
            int [] arr2 = new int[arr.length];

            boolean answer= false;
            for (int i = 0; i < arr.length; i  ) {
                arr2[i]=2*arr[i];
            }

            for (int i = 0; i < arr.length; i  ) {
                for (int j = arr.length-1; j >= 0; j--) {

                    if(i == j){
                         continue;
                    }  if(arr[i] == arr2[j]){
                        answer=true;
                        break;
                        }  
                }
            }
            return answer;
        }
    }
  • Related