Это моя первая попытка использовать HashMap. Дана таблица с n целыми числами. Цель состоит в том, чтобы вычислить, во сколько общих подтаблиц сумма чисел равна x. Я пытался попробовать следующее. Пример вывода 2,10,4. Я получаю 2,10,2. Есть идеи, где я ошибаюсь? Заранее спасибо.
public class FindSum {
long count(int[] t, int x) {
HashMap<Integer, Integer> totals = new HashMap<>();
long count = 0;
int sum = 0;
for (int i = 0; i < t.length; i++) {
int value = t[i];
sum += value;
if (totals.containsKey(sum - x)) {
count += totals.get(sum - x);
}
if (value == x) {
count++;
}
totals.put(sum, totals.getOrDefault(sum, 0) + 1);
}
return count;
}
}
Sample output:
FindSum f = new FindSum();
System.out.println(s.count(new int[] {1,3,2,4}, 4)); // 2
System.out.println(s.count(new int[] {0,0,0,0}, 0)); // 10
System.out.println(s.count(new int[] {1,-1,1,-1}, 0)); // 4