一、求两个数和比一个值小所有情况
题目:给定一个数组,求所有满足两个数之和小于等于一个指定值的数目 如: 输入: 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;