TCS Ninja Digital Coding Question

In a computer game, two sets of numbers are flashed on the screen for a few seconds Players need to calculate the sum of the numbers in each of the sets. If the resulting such is odd for either of the two sets, then the players need to identity if swapping any numbers between the two sets would make the resulting sum even in both the sets. The task is to write a code to identify the minimum number of swaps required to ensure that the resulting sum of each of the two sets of numbers is even if there is no possibility of achieving this, then the output t needs to be flagged as -1.

Example 1:

Input:

4-> Value of N

(1,4, 20, 2)-> arr1[] Elements a[0] to a[N-1]. where each input element is separated by a new line.

4-> Value of M

(5,9 , 6 , 3)-> arr2[] Elements a[0] to a[M-1]. where each input element is separated by a new line.

Output: 1

Explanation:

in the Array arr1[i] = (1,4,20,2) Sum1 @ 27 (odd) In the Array arr20]=(5,9,6,3) Sum223 (odd)

Swapping arr1[0] = 1 and arr2[2] = 6 will make the Sum1 and Sum2 even in the Array arr10] (6.4,20,2) Sum1 = 32 (even) In the Array arr2[0]=(5,9,1,3) Sum2 = 18 (even)

As only one swapping is required to make the sums even, the output is 1

Example 2:

4-> Value of N

(3,2,2)-> arr1[] , Elements a[0] to a[N-1], where each input element is separated by a new line.

4 → Value of M

(2,9,6,3)-> arr2[], Elements a[0] to a[M-1], where each input element is separated by a new line.

Output:

0

Explanation:

In the Array Sum1 = 8 (even) In the Array arr2g = (2.9.6.3) Sum2=20 (even) As both Sum1 and Sum2 are even, the output is 0

(indicating no swap is required).

Solution : –

import java.util.*;

public class Template {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int sum = 0;
int sum2 = 0;
int arr[]= new int[n];

for(int i = 0; i < n ; i++){
arr[i] = sc.nextInt();
sum += arr[i];
}

int m = sc.nextInt();
int arr2[] = new int[m];

for(int i = 0; i < m ; i++){
arr2[i] = sc.nextInt();
sum2 += arr2[i];
}

if((sum%2 == 0 && sum2%2 == 1)||(sum%2 == 1 && sum2%2 == 0)){
System.out.println("-1");
}


if(sum%2 == 0 && sum2%2 == 0){
System.out.println("0");
}

if(sum%2 == 1 && sum2%2 == 1){
    if(arr[0]%2==0){
     for(int i = 0 ; i < m; i++) {
if(arr2[i]%2!=0) {
int temp = arr[0];
arr[0] = arr2[i];
arr2[i] =temp;
}
}

System.out.println("1");

}

else if(arr[0]%2!=0) {

for(int i = 0 ; i < m; i++) {

if(arr2[i]%2==0) {

int temp = arr[0];

arr[0] = arr2[i];

arr2[i] =temp;

}
}
System.out.println("1");

}
}
sc.close();
}
}

Enter fullscreen mode Exit fullscreen mode

Output test case 1 Output test case 2 Output test case 3

原文链接:TCS Ninja Digital Coding Question

© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容