一、求两个数和比一个值小所有情况
题目:给定一个数组,求所有满足两个数之和小于等于一个指定值的数目
如:
输入:
1 2 3
5
输出:3
描述: 【1,2】【1,3】【2,3】
代码:
Scanner sc = new Scanner(System.in);
String nums = sc.nextLine();
Integer ans = 0;
Integer num = sc.nextInt();
String[] s = nums.split(" ");
ArrayList<Integer> list = new ArrayList<>();
for (int i = 0; i < s.length; i++) {
list.add(Integer.parseInt(s[i]));
}
for(int i =0; i<list.size();i++){
for(int j =1; j<list.size()-1;j++){
if(list.get(i) + list.get(j) <= num){
ans++;
}
}
}
System.out.println(ans);
二、孩子座一圈年龄大的比小的试卷要多
题目描述:一群孩子围坐在一圈,孩子手里至少有一张试卷,孩子年龄大的必须必年龄小的试卷多,请问,至少有多少张试卷?
输入:1 1 1
输出:3
输入: 1 2 3
输出:6
代码思想:先让所有孩子的试卷都为1,第一个孩子的试卷必须为1,和输入的集合中的年龄作比较,如果年龄相同,试卷不变,如果年龄大与前一个,则相应改变试卷数量+1.
Scanner sc = new Scanner(System.in);
String nums = sc.nextLine();
int ans = 0;
String[] s = nums.split(" ");
ArrayList<Integer> list = new ArrayList<>();
for (int i = 0; i < s.length; i++) {
list.add(Integer.parseInt(s[i]));
}
// 排序 1 2 2 3 4 5 6
Collections.sort(list);
ArrayList<Integer> list1 = new ArrayList<>();
for (int i = 0; i < list.size(); i++) {
list1.add(1);
}
for (int i = 0; i < list.size() - 1; i++) {
if (list.get(i) < list.get(i + 1)) {
list1.set(i+1,list1.get(i)+1);
}
}
for (int i = 0; i < list1.size(); i++) {
ans += list1.get(i);
}
return ans;
评论