字节跳动算法题(并查集)


[a,b,c] [b, d, f] [g, h] 这种样例,一个框里面的是相同的,简单说就是都是朋友,让你输出最后有几个朋友圈,都是谁?这个样例就是 [a,b,c,d,f] [g,h]
有无大佬可以用java实现一下,实在是想不明白怎么保存父节点
#字节跳动#
全部评论
dfs一下就出来了😂
点赞 回复 分享
发布于 2021-03-13 20:57
    public void findFriend(String s, List<List<Integer>> pairs) {         int n = s.length();         int[] father = new int[n];         /*记录秩*/         int[] rank = new int[n];         for(int i = 0; i < n; i++) {             father[i] = i;             rank[i] = 1;         }                  for(List<Integer> pair : pairs) {             union(pair.get(0),pair.get(1),father,rank);         }         char[] sChar = s.toCharArray();         /*key : 根节点   Value: 这个根节点的连通分量*/         Map<Integer,Queue<Character>> map = new HashMap();         for(int i = 0; i < n; i++) {             int root = find(i,father);             if(map.containsKey(root)) {                 map.get(root).offer(sChar[i]);             } else{                 Queue<Character> queue = new LinkedList<>();                 queue.offer(sChar[i]);                 map.put(root,queue);             }         }     }
点赞 回复 分享
发布于 2021-03-13 13:55
如果是连续的字符的话 parent['a&(417)#39; -'0'] = &#39;b' - &(11720)#39;0'?,不连续那只能用哈希表 unordered_map<char, char>mp;mp[a] = b,连通分量的个数也可以?
点赞 回复 分享
发布于 2021-03-11 17:46
https://pastebin.com/sMUwzGbU 并查集就几句话,你对每个元素进行标号,然后合并就可以了
点赞 回复 分享
发布于 2021-03-10 12:02
这题dfs或者并查集,我只会c++
点赞 回复 分享
发布于 2021-03-10 10:25
你已经说了是并查集 那直接用数组嘛!
点赞 回复 分享
发布于 2021-03-10 09:11

相关推荐

owwhy:难,技术栈在嵌入式这块显得非常浅,并且简历有大问题。教育经历浓缩成两行就行了,写什么主修课程,说的不好听这块没人在意,自我评价删了,项目写详细点,最终简历缩成一页。相关技能怎么说呢,有点差了,还写成这么多行
投了多少份简历才上岸
点赞 评论 收藏
分享
在笔试的大西瓜很矫健:校招数分不用想了,这经历和学历都不够用,大厂更别想,初筛都过不了,说点不好听的小厂数分都进不去(小厂也是假数分),要两个对口实习+3个项目(或者3+2),而且要有含金量才能补一点你的学历劣势。 建议刷实习,社招找数分,校招看运气,能入行业就行,可以运营转数分
点赞 评论 收藏
分享
评论
点赞
3
分享

创作者周榜

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