请问qq客户端的面试难度是什么样的
点赞 评论

相关推荐

import java.util.*;import java.io.*;public class Main {// 并查集:父节点映射 + 秩映射(按秩合并用)public static HashMap<Integer, Integer> parent = new HashMap<>();// 查找(路径压缩 + 自动初始化节点)public static int find(int x) {// 节点不存在则初始化:父节点是自己,秩为1parent.putIfAbsent(x, x);// 路径压缩(迭代版,避免递归栈溢出)while (!parent.get(x).equals(x)) {parent.put(x, parent.get(parent.get(x))); // 父节点指向祖父节点x = parent.get(x);}return x;}// 合并(按秩合并 + 路径压缩)public static void merge(int x, int y) {int rootX = find(x);int rootY = find(y);if (rootX == rootY) return;// 按秩合并:将秩小的树合并到秩大的树parent.put(rootY, rootX);}// 生成统一的边key(避免{a,b}和{b,a}重复)static String getRelationKey(int a, int b) {return a < b ? a + "," + b : b + "," + a;}public static void main(String[] args) throws IOException {// 替换Scanner为BufferedReader,提升输入效率BufferedReader br = new BufferedReader(new InputStreamReader(System.in));String[] parts = br.readLine().split(" ");int n = Integer.parseInt(parts[0]);int m = Integer.parseInt(parts[1]);int q = Integer.parseInt(parts[2]);// 存储原始边Set<String> edges = new HashSet<>();for (int i = 0; i < m; ++i) {parts = br.readLine().split(" ");int a = Integer.parseInt(parts[0]);int b = Integer.parseInt(parts[1]);edges.add(getRelationKey(a, b));}// 存储有效操作(过滤无效删除)ArrayList<int[]> ops = new ArrayList<>();for (int i = 0; i < q; ++i) {parts = br.readLine().split(" ");int op = Integer.parseInt(parts[0]);int a = Integer.parseInt(parts[1]);int b = Integer.parseInt(parts[2]);if (op == 1) {String key = getRelationKey(a, b);if (edges.contains(key)) {edges.remove(key);ops.add(new int[]{op, a, b});}} else {ops.add(new int[]{op, a, b});}}// 初始化:合并所有未被删除的边(最终状态)for (String key : edges) {String[] nodes = key.split(",");int a = Integer.parseInt(nodes[0]);int b = Integer.parseInt(nodes[1]);merge(a, b);}// 倒序处理操作,记录答案List<Boolean> answers = new ArrayList<>();for (int i = ops.size() - 1; i >= 0; i--) {int[] op = ops.get(i);if (op[0] == 1) {// 原删除操作 → 逆操作:合并merge(op[1], op[2]);} else {// 原查询操作:判断是否连通boolean connected = find(op[1]) == find(op[2]);answers.add(connected);}}// 逆序输出答案for (int i = answers.size() - 1; i >= 0; --i) {System.out.println(answers.get(i) ? "Yes" : "No");}}}
投递美团等公司9个岗位
点赞 评论 收藏
分享
1.  你先做个简单的自我介绍吧。2.  Java常用的集合 ArrayList 和 LinkedList 的区别是什么?3.  (ArrayList/LinkedList)在查询、插入、删除使用上各自的区别呢?4.  Java中常用的 final 修饰符有哪些作用?5.  谈谈你对 IOC 和 AOP 的理解。6.  谈谈你对 Java 反射机制的理解,以及它的优点和缺点。7.  能介绍下线程池常用的七大参数吗?8.  一般设置核心线程数会从哪些因素去考虑?9.  介绍一下线程池的工作机制(任务提交后如何工作)?10. 核心线程执行完任务时会被销毁吗?11. 谈一下你对消息队列的理解,它主要有哪些作用?12. 介绍一下线程和进程的区别。13. 进程间通信和线程间通信各自有什么方式?14. 描述下数据库事务的四大特性(ACID)。15. 描述一下创建索引的一些原则。16. 你对全文索引、哈希索引和 B+ 树索引的理解是什么?它们各自的应用场景?17. 介绍一下 JVM 垃圾收集器的几种算法及其优缺点。18. (实习经历)能简单介绍一下你主要做什么?19. 你们在做的过程中有没有遇到什么比较棘手的问题?20. 你能简单介绍一下你们的审批流模块主要做了什么事情?21. (审批流)有涉及到多角色或组织架构吗?22. 你能介绍一下(另一份实习)的经历吗?23. 你最近有学习过什么新的技术和知识吗?24. 你之前提到的技术挑战赛,主要是做什么的?25. 你的数学建模(竞赛)主要是做了什么事情?26. 你对这两个竞赛有什么收获吗?27. 你看你有没有什么问题需要问的?
查看27道真题和解析
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务