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 重庆

相关推荐

11-09 14:54
已编辑
华南农业大学 产品经理
大拿老师:这个简历,连手机号码和照片都没打码,那为什么关键要素求职职位就不写呢? 从上往下看,都没看出自己到底是产品经理的简历,还是电子硬件的简历? 这是一个大问题,当然,更大的问题是实习经历的描述是不对的 不要只是去写实习流程,陈平,怎么去开会?怎么去讨论? 面试问的是你的产品功能点,是怎么设计的?也就是要写项目的亮点,有什么功能?这个功能有什么难处?怎么去解决的? 实习流程大家都一样,没什么优势,也没有提问点,没有提问,你就不得分 另外,你要明确你投的是什么职位,如果投的是产品职位,你的项目经历写的全都是跟产品无关的,那你的简历就没用 你的面试官必然是一个资深的产品经理,他不会去问那些计算机类的编程项目 所以这种四不像的简历,在校招是大忌
点赞 评论 收藏
分享
牛客5655:其他公司的面试(事)吗
点赞 评论 收藏
分享
15 32 评论
分享
牛客网
牛客企业服务