2 * minimum(arr[i],arr[j]) каждый элемент ввода находится в диапазоне от 1 до 10^9
[/list]
Я попробовал решить эту задачу с помощью TreeMap:
[code]import java.util.*;
public class Main
{
public static void main(String[] args) {
System.out.println(solve(Arrays.asList(2, 5, 7, 6, 9, 8 , 4 , 2)));//3
System.out.println(solve(Arrays.asList(2,1,2,4,1,4,1)));//3
}
static int solve(List arr) {
arr.sort(Comparator.reverseOrder());
TreeMap map = new TreeMap();
for(int e : arr) map.put(e, map.getOrDefault(e,0)+1);
int result = 0;
for(int e : arr) {
int min = 2 * e;
if(map.get(e) == null) continue;
Integer key = map.ceilingKey(min);
if(key != null) {
map.put(e,map.get(e)-1);
if(map.get(e)
Подробнее здесь: [url]https://stackoverflow.com/questions/79216608/find-unique-pairs[/url]
Существует список чисел размера n. Найдите максимальное количество пар, которое соответствует приведенному ниже шаблону: [code]2 * minimum(arr[i],arr[j]) каждый элемент ввода находится в диапазоне от 1 до 10^9 [/list]
Я попробовал решить эту задачу с помощью TreeMap: [code]import java.util.*; public class Main { public static void main(String[] args) { System.out.println(solve(Arrays.asList(2, 5, 7, 6, 9, 8 , 4 , 2)));//3 System.out.println(solve(Arrays.asList(2,1,2,4,1,4,1)));//3 }
static int solve(List arr) { arr.sort(Comparator.reverseOrder()); TreeMap map = new TreeMap(); for(int e : arr) map.put(e, map.getOrDefault(e,0)+1); int result = 0; for(int e : arr) { int min = 2 * e; if(map.get(e) == null) continue; Integer key = map.ceilingKey(min); if(key != null) { map.put(e,map.get(e)-1); if(map.get(e)