阿里0314笔试题

第一道
static Map<Character, Integer> map = new HashMap<>();

    static {
        map.put('0', 0);
        map.put('1', 1);
        map.put('2', 1);
        map.put('3', 2);
        map.put('4', 1);
        map.put('5', 2);
        map.put('6', 2);
        map.put('7', 3);
        map.put('8', 1);
        map.put('9', 2);
        map.put('a', 2);
        map.put('b', 3);
        map.put('c', 2);
        map.put('d', 3);
        map.put('e', 3);
        map.put('f', 4);
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String s = scanner.next();
        s = s.replace("0x", "");
        int ans = 0;
        for (int i = 0; i < s.toCharArray().length; i++) {
            ans += map.get(s.charAt(i));
        }
    }



第二道,暴力破解了
public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt(), m = scanner.nextInt();
        int[][] nums = new int[n][m];
        int[][] up = new int[n][m];
        int[][] down = new int[n][m];
        int[][] left = new int[n][m];
        int[][] right = new int[n][m];
        int ans = 0;
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < m; j++) {
                nums[i][j] = scanner.nextInt();
            }
        }

        for (int i = 1; i < n; i++) {
            for (int j = 0; j < m; j++) {
                up[i][j] = up[i - 1][j] + nums[i - 1][j];
            }
        }

        for (int i = n - 2; i >= 0; i--) {
            for (int j = 0; j < m; j++) {
                down[i][j] = down[i + 1][j] + nums[i + 1][j];
            }
        }

        for (int j = 1; j < m; j++) {
            for (int i = 0; i < n; i++) {
                left[i][j] = nums[i][j - 1] + left[i][j - 1];
            }
        }

        for (int j = m - 2; j >= 0; j--) {
            for (int i = 0; i < n; i++) {
                right[i][j] = nums[i][j + 1] + right[i][j + 1];
            }
        }

        for (int i = 0; i < n; i++) {
            for (int j = 0; j < m; j++) {
                if (nums[i][j] == 0) {
                    if (left[i][j] >= 1) {
                        ans++;
                    }
                    if (right[i][j] >= 1) {
                        ans++;
                    }
                    if (up[i][j] >= 1) {
                        ans++;
                    }
                    if (down[i][j] >= 1) {
                        ans++;
                    }
                }
            }
        }
        System.out.println(ans);
    }
第三道,最后十多分钟,看不懂题目,没做。

#阿里笔试##阿里巴巴##笔经#
全部评论
我第一道都不会
1 回复 分享
发布于 2022-03-14 20:46
楼主第二题暴力a多少呀??
点赞 回复 分享
发布于 2022-03-14 20:40
我第二题暴力只a了45。。
点赞 回复 分享
发布于 2022-03-14 20:41
第二题我一样暴力,只有50😭
点赞 回复 分享
发布于 2022-03-14 20:43
第二题感觉对C++选手不太友好,同样的方法只55%
点赞 回复 分享
发布于 2022-03-14 20:45
第三题是模拟消消乐么,整懵 了
点赞 回复 分享
发布于 2022-03-14 20:48
几道能过啊 第二道骗了30%
点赞 回复 分享
发布于 2022-03-14 20:48
消消乐过样例了,最后几分钟没调出来,寄😭
点赞 回复 分享
发布于 2022-03-14 20:56

相关推荐

coffrar:全都是已读😅沟通一千五百多个了
点赞 评论 收藏
分享
评论
4
11
分享

创作者周榜

更多
牛客网
牛客企业服务