Алгоритм суммирования HashMap - PullRequest
0 голосов
/ 12 октября 2019

Это моя первая попытка использовать 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...