Untitled
unknown
java
2 years ago
1.7 kB
21
Indexable
import java.util.*;
class Solution {
public int solution(int[] A, int[] B) {
int sumA = 0, sumB = 0;
for (int num : A)
sumA += num;
for (int num : B)
sumB += num;
int diff = Math.abs(sumA - sumB);
// If the difference between sums is odd, it's impossible to make them equal
if (diff % 2 != 0)
return -1;
// Calculate the target sum for both arrays
int target = diff / 2;
// Count occurrences of each number in A
int[] countA = new int[7]; // Extra space for indexing from 1 to 6
for (int num : A)
countA[num]++;
// Iterate through each possible value that could be obtained by changing the face of a die in B
for (int num : B) {
int potentialNewSumB = sumB - num + target;
if (potentialNewSumB >= 1 && potentialNewSumB <= 6) {
int neededInA = Math.abs(countA[potentialNewSumB]);
if (neededInA > 0)
return Math.abs(countA[potentialNewSumB]); // Minimum number of dice to be turned
}
}
return -1; // No solution found
}
public static void main(String[] args) {
Solution solution = new Solution();
// Test cases
System.out.println(solution.solution(new int[]{5}, new int[]{1, 1, 6})); // 1
System.out.println(solution.solution(new int[]{2, 3, 1, 1, 2}, new int[]{5, 4, 6})); // 2
System.out.println(solution.solution(new int[]{5, 4, 1, 2, 6, 5}, new int[]{2})); // 6
System.out.println(solution.solution(new int[]{1, 2, 3, 4, 3, 2, 1}, new int[]{6})); // -1
}
}
Editor is loading...
Leave a Comment