小红书8.28日后端笔试AK代码

1.
static class chess {
        int id;
        int num;
        public chess(int id, int num) {
            this.id = id;
            this.num = num;
        }
    }
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        String[] str = scan.nextLine().split(" ");
        int n = Integer.parseInt(str[0]);
        int m = Integer.parseInt(str[1]);
        int id = Integer.parseInt(str[2]);
        int[] nums = new int[n];
        for (int i = 0; i < n; i++) {
            str = scan.nextLine().split(" ");
            for (int j = 0; j < m; j++) {
                nums[i] += Integer.parseInt(str[j]);
            }
        }
        List<chess> list = new ArrayList<chess>();
        for (int i = 0; i < n; i++) {
            list.add(new chess(i, nums[i]));
        }
        list.sort(new Comparator<chess>() { @Override public int compare(chess o1, chess o2) {
                if (o1.num != o2.num) {
                    return o2.num - o1.num;
                }
                else {
                    return o1.id - o2.id;
                }
            }
        });
        for (int i = 0; i < list.size(); i++) {
            if (list.get(i).id == id - 1) {
                System.out.println(i + 1);
                break;
            }
        }

    }


2.
public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        String[] str = scan.nextLine().split(" ");
        int n = Integer.parseInt(str[0]);
        long k = Long.parseLong(str[1]);
        str = scan.nextLine().split(" ");
        long[] nums = new long[n];
        for (int i = 0; i < n; i++) {
            nums[i] = Long.parseLong(str[i]);
        }
        Arrays.sort(nums);
        int slow = 0;
        int fast = 0;
        int res = 0;
        while (slow < n) {
            fast = slow + 1;
            while (fast < n) {
                long temp = nums[fast] * nums[slow];
                if (temp >= k) {
                    break;
                }
                fast++;
            }
            res += 2 * (n - fast);
            slow++;
        }
        System.out.println(res);
    }
3.
private static int res;

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        String str = scan.nextLine();
        int n = Integer.parseInt(str);
        boolean[][] nums = new boolean[n + 1][n + 1];
        String[] strs = scan.nextLine().split(" ");
        for (int i = 1; i < n; i++) {
            int num = Integer.parseInt(strs[i - 1]);
            if (i + 1 > num) {
                nums[i + 1][num] = true;
            }
            else {
                nums[num][i + 1] = true;
            }
        }
        HashSet<Integer> set = new HashSet<Integer>();
        dfs(nums, set, 0, 2);
        System.out.println(res);
    }

    private static void dfs(boolean[][] nums, HashSet<Integer> set, int sum, int index) {
        for (int i = index; i < nums.length; i++) {
            for (int j = 1; j < i; j++) {
                if (!nums[i][j]) {
                    continue;
                }
                else {
                    if (set.contains(i)) {
                        break;
                    }
                    else if (set.contains(j)) {
                        continue;
                    }
                    else {
                        set.add(i);
                        set.add(j);
                        sum++;
                        dfs(nums, set, sum, i + 1);
                        sum--;
                        set.remove(i);
                        set.remove(j);
                    }
                }
            }
        }
        res = Math.max(res, sum);
    }




#小红书##笔试#
全部评论
请问第三题什么思路嘛?
点赞 回复 分享
发布于 2022-08-28 20:32 江苏
第三题跟你差不多,居然超时啦。。
点赞 回复 分享
发布于 2022-08-28 18:06 浙江
为什么 dfs(nums, set, 0, 2);  从2 开始
点赞 回复 分享
发布于 2022-08-28 21:11 浙江
这个第二题不考虑重复的数吗?
点赞 回复 分享
发布于 2022-09-03 00:25 甘肃
学习了
点赞 回复 分享
发布于 2022-08-29 09:29 河南

相关推荐

4 8 评论
分享
牛客网
牛客企业服务