首先排序
左右指针
这两种情况可以合并
array[r] == length || array[r]+array[l] > length
array[r]+array[l] <= length
关键 每个最多放两个 因此不用考虑太多 不用考虑 再放第三个
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner in = new Scanner(System.in);
int length = in.nextInt();
ArrayList<Integer> items = new ArrayList<Integer>();
while(in.hasNext()){
items.add(in.nextInt());
}
items.sort(Comparator.naturalOrder());
Integer[] array = items.toArray(new Integer[0]);
int l = 0;
int r = items.size()-1;
int res = 0;
while(l<=r){
if(array[r] == length || array[r]+array[l] > length){
res++; r--;
}
else if(array[r]+array[l] <= length ){
res++; r--; l++;
}
}
System.out.println(res);
}
}


京公网安备 11010502036488号