Тема: Collections binary search з порівнятором
Дано перелік цілих чисел і задане число. Потрібно знайти кількість пар чисел, сума елементів яких менше заданого числа.
Другий елемент пари обов'язково має стояти після першого в цьому переліку.
Я намагаюся використати бінарний пошук із колекцій, але щось в мене не виходить. Просто не розумію як правильно докупи все зібрати.
class Solution {
public int countPairs(List<Integer> nums, int target) {
Collections.sort(nums);
int answer = 0;
record Num_Pair(Integer target, Integer num) {
}
;
Comparator<Num_Pair> cmp = new Comparator<Num_Pair>() {
public int compare(Num_Pair first, Num_Pair second) {
if (first.target - second.num < 2) {
return 1;
} else {
return -1;
}
}
};
for (int i = 0; i < nums.size(); ++i) {
List<Integer> new_list = new ArrayList<>();
new_list = nums.subList(i, nums.size() - 1);
Num_Pair new_pair;
new_pair.target = target;
new_pair.num = nums.get(i);
int index = Collections.binarySearch(new_list, new_pair, cmp);
if (index > 0) {
++answer;
}
}
return answer;
}
}