个人2021-08-21网易云java后端开发编程笔试题目

在这里插入图片描述

一、求两个数和比一个值小所有情况

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

猜你喜欢

转载自blog.csdn.net/wyn_365/article/details/119844685