0419阿里笔试

Q1-100%

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

public class Q1 {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int n = scan.nextInt(), k = scan.nextInt();
        int[] nums = new int[n];
        for (int i = 0; i < n; i++) nums[i] = scan.nextInt();
        int l = 0, r = 0, max = 0;
        long ans = 0;
        Map<Integer, Integer> map = new HashMap<>();
        while (r < n) {
            int v = map.getOrDefault(nums[r], 0);
            map.put(nums[r], v + 1);
            max = Math.max(max, v + 1);
            while (max >= k) {
                ans += n - r;
                v = map.get(nums[l]);
                if (v == 1) map.remove(nums[l]);
                else map.put(nums[l], v - 1);
                if (v == max) max--;
                l++;
            }
            r++;
        }
        System.out.println(ans);
    }
}

Q2-100%

import java.util.Scanner;

public class Q2 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int m = sc.nextInt();
        String[][] matrix = new String[n][m];
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < m; j++) {
                matrix[i][j] = sc.next();
            }
        }
        int q = sc.nextInt();
        for (int i = 0; i < q; i++) {
            int t = sc.nextInt() - 1, y = sc.nextInt() - 1;
            if (matrix[t][y].equals("-1")) System.out.println(0);
            else {
                int score = dfs(matrix, t, y, matrix[t][y].charAt(0), n, m);
                updateMatrix(matrix, n, m);
                System.out.println(score);
            }
        }
    }

    private static int dfs(String[][] matrix, int r, int c, char color, int n, int m) {
        if (r < 0 || r >= n || c < 0 || c >= m || matrix[r][c].charAt(0) != color) return 0;
        int score = matrix[r][c].charAt(1) - '0';
        matrix[r][c] = "-1";
        score += dfs(matrix, r + 1, c, color, n, m);
        score += dfs(matrix, r - 1, c, color, n, m);
        score += dfs(matrix, r, c + 1, color, n, m);
        score += dfs(matrix, r, c - 1, color, n, m);
        return score;
    }

    private static void updateMatrix(String[][] matrix, int n, int m) {
        for (int j = 0; j < m; j++) {
            int cnt = 0;
            for (int i = n - 1; i >= 0; ) {
                while (i >= 0 && matrix[i][j].equals("-1")) {
                    cnt++;
                    i--;
                }
                while (i >= 0 && !matrix[i][j].equals("-1")) {
                    matrix[i + cnt][j] = matrix[i][j];
                    i--;
                }
            }
            while (--cnt >= 0) matrix[cnt][j] = "-1";
        }
    }
}

Q3-10%

全部评论
第三题 (n-2)*676*(26^(n-3)) 快速幂算一下
7 回复 分享
发布于 2023-04-19 21:13 北京
大哥🐮
2 回复 分享
发布于 2023-04-19 21:09 浙江
还得是你呀!阿盛哥
2 回复 分享
发布于 2023-04-19 21:13 四川
盛哥🐮
1 回复 分享
发布于 2023-04-19 21:15 湖北
楼主能说下第一题思路吗?没看太懂为什么第15行压入的是left指针指向的值
1 回复 分享
发布于 2023-04-19 21:59 广东
大佬牛逼
点赞 回复 分享
发布于 2023-04-19 22:17 江苏
大佬啥部门?
点赞 回复 分享
发布于 2023-04-19 23:06 北京
阿里数字供应链部门刚开始春招,欢迎同学踊跃报表。查看个人首页帖子 查看部门介绍和扫码线上投递简历。 https://www.nowcoder.com/discuss/472422701500485632
点赞 回复 分享
发布于 2023-04-20 15:15 浙江
盛哥🐮
点赞 回复 分享
发布于 2023-04-20 20:19 浙江
大🐂子
点赞 回复 分享
发布于 2023-04-20 21:22 重庆

相关推荐

头像
10-16 09:58
已编辑
门头沟学院 Java
点赞 评论 收藏
分享
15 32 评论
分享
牛客网
牛客企业服务