米哈游0319笔试

第一次写//

发一下昨晚做题的思路 时间不够用啊 第三题有运行错误 没调试出来

只有第一题并查集全a了

package travers;

import java.util.Scanner;

public class mihay {
    static int n;
    static int m;
    static char[][] board, board2;
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        n = sc.nextInt();
        m = sc.nextInt();
        String[] s = new String[n];
        board = new char[n][m];
        for (int i = 0; i < n; i++){
            s[i] = sc.next();
            board[i] = s[i].toCharArray();
        }
        int res = 0;
        int res1 = 0;
        board2 = new char[n][m];
        for (int i = 0; i < n; i++){
            for (int j = 0; j < m; j++){
                board2[i][j] = board[i][j] == 'G' ? 'B' : board[i][j];
            }
        }
        for (int i = 0; i < n; i++){
            for (int j = 0; j < m; j++){
                if (board[i][j] != 'q'){
                    res++;
                    dfs(board, i, j, board[i][j]);
                }
                if (board2[i][j] != 'q'){
                    res1++;
                    dfs(board2, i, j, board2[i][j]);
                }
            }
        }
        System.out.println(res - res1);
    }
    public static void dfs(char[][] board, int i, int j, char temp){
        if (i < 0 || j < 0 || i > n - 1 || j > m - 1 || board[i][j] != temp ||board[i][j] == 'q') {
            return;
        }
        char tmp = board[i][j];
        board[i][j] = 'q';
        dfs(board, i-1, j, tmp);
        dfs(board, i+1, j, tmp);
        dfs(board, i, j-1, tmp);
        dfs(board, i, j+1, tmp);
    }
}

第二题 哈希映射0.5(不知道为啥) 、

package travers;

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

public class mihay2 {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        for (int i = 0; i < n; i++){
            String s = sc.next();
            String t = sc.next();
            String s1 = s.length() > t.length() ? s : t;
            String t1 = s.length() > t.length() ? t : s;
            HashMap<Character, Integer> map = new HashMap<>();

            for (int j = 0; j < s1.length(); j++){
                char ch = s1.charAt(j);
                map.put(ch, map.getOrDefault(ch, 0) + 1);
            }
            boolean flag = true;
            for (int j = 0; j < t1.length(); j++){
                char ch2 = t1.charAt(j);
                if (!map.containsKey(ch2)){
                    flag = false;
                    break;
                }
                map.put(ch2, map.get(ch2) - 1);
            }
            if (flag){
                for (Character ch : map.keySet()){
                    if (ch == 'm' || ch == 'h' || ch == 'y' || map.get(ch) == 0) {
                        continue;
                    }
                    flag = false;
                    break;
                }
            }
            if (map.get('m') != map.get('h') || map.get('m') != map.get('y') || !flag)
                System.out.println("No");
            else
                System.out.println("Yes");
        }
    }
}

第三题感觉是个子集dfs的思路 但是呢找不到错哪

package travers;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class mihay3 {
    static List<List<Integer>> res = new ArrayList<>();
    static List<Integer> tmp = new ArrayList<>();
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[] a = new int[n];
        for (int i = 0; i < n; i++){
            a[i] = sc.nextInt();
        }
        dfs(a, 0);
        System.out.println(res.size());
    }
    public static void dfs(int[] nums, int startInd){
        if (tmp.size() >= 2){
            if (isValid(tmp)){
                res.add(new ArrayList<>(tmp));
            }
            else
                return;
        }
        for (int i = startInd; i < nums.length; i++){
            tmp.add(nums[i]);
            dfs(nums, i + 1);
            tmp.remove(tmp.size() - 1);
        }
    }
    public static boolean isValid(List<Integer> nums){
        if (nums.size() == 2){
            int a = nums.remove(nums.size()-1);
            int b = nums.remove(nums.size()-1);
            return a % b == 0 ? true : false;
        }
        int a = nums.remove(nums.size()-1);
        int b = nums.remove(nums.size()-1);
        int temp = a / b;
        while (!tmp.isEmpty()){
            a = b;
            b = nums.remove(nums.size()-1);
            if (a / b != temp)
                return false;
        }
        return true;
    }
}

第二题第三题有没有大神指导一下

#暑假实习##米哈游##java##笔试#
全部评论
兄弟 问个问题 这种笔试题能交流吗 会不会说我***
点赞 回复 分享
发布于 2023-03-21 19:48 澳大利亚
看我帖子
点赞 回复 分享
发布于 2023-03-20 13:29 上海

相关推荐

08-28 11:37
已编辑
华东师范大学 Java
Sigma777:本来想说师弟怎么把我这个老东西卷没了,仔细一看是师兄 简历不错,但是得准备好选型话术,比如我举个例子你为什么要用caffeine,一般我们的小项目不会有这么hot的key需要本地缓存,你要说明你是如何发现有这么hot的key连redis都兜不住的,引入后优化了多少时间,然后还有本地缓存大小设置为多少,这个大小能保证热点key不会因为太小而淘汰也不会因为太大影响服务吗,为什么不用guava,引入本地缓存同步问题怎么解决。 然后分库分表,为什么你觉得要分表,数据量多少,分多少张表几个库,分片键选择依据,你的所有查询能不能准确定位到某一张避免全库扫描,有没有数据倾斜问题就是分的每张表数据量差距特别大,你是一开始分库分表还是后期发现瓶颈才分,如果后期才分你如何把旧表的数据搬过去同时还能确保业务正常运行。 然后是消息队列,你说缓存高并发请求,却选择了吞吐量较小的rabbit,有什么原因吗,为什么不选Kafka。 然后你说分布式锁解决集群环境并发安全,也就是说你是集群部署的,请问是怎么部署的,docker还是k8s,部署几台,配置是多少,jvm参数设置是多少,有监控吗,线上遇到故障吗,怎么解决的,有做负载均衡吗,数据是怎么压测的等等。 zset缓存本月实时排行数据具体怎么做的,会有大key问题吗。 其他本小渣暂时想不到了,留给其他大神点评
点赞 评论 收藏
分享
ResourceUt...:楼主有自己的垃圾箱,公司也有自己的人才库
点赞 评论 收藏
分享
评论
4
5
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务