Prompt
Write a function that takes in a “special” array and returns its product sum. A “special” array is a non-empty array that contains eitherintegers or other “special” arrays. The product sum of a “special” array is the sum of it s elements, where “special” arrays inside it are summed themselves and then multiplied by their level of depth.
For example, the product sum of [x, y] is x + y ; the product sum of [x, [y, z]] is x + 2y + 2z .
Solution
import java.util.*;
class Program {
// O(n) time | O(h) space - where n is the total number of elements in the array,
// including sub-elements, and d is the greatest depth of "special" arrays in the array
// Tip: You can use `element instanceof ArrayList` to check whether an item
// is an array or an integer.
public static int productSum(List<Object> array) {
// Write your code here.
return productSumHelper(array, 1);
}
public static int productSumHelper (List<Object> array, int layer) {
int sum = 0;
for (Object el : array) {
if (el instanceof ArrayList) {//A
@SuppressWarnings("unchecked")//B
ArrayList<Object>ls = (ArrayList<Object>)el;//C
sum += productSumHelper(ls, layer + 1);
} else {
sum += (int) el;
}
}
return sum * layer;
}
}
# A
# B
- @SuppressWarnings
# C
- Object