首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
sayhaha
2017-08-31 11:56
已编辑
湖南大学 Java
关注
已关注
取消关注
美团内推一面问题
面试官问了一道题,n个集合去重。 例如有3个集合 {1,2},{2,1},{3} 但其实前两个属于同一个集合,去除重复的,最后输出两个集合{1,2},{3} 当时回答的不好,复杂度很高,各位大神有什么好的方法或解题思路?
注意是集合去重,不是集合中的元素去重。
提示
全部评论
推荐
最新
楼层
Szhazha
西安电子科技大学 C++
我也是这个题目,写了排列,一直在那基础上改,没改出来。后来跟同学讨论,可以认为每个数都有出现和不出现两种可能,所以从第一位递归处理就好了,代码也很简单
点赞
回复
分享
发布于 2017-08-31 00:34
sayhaha
楼主
湖南大学 Java
我当时的想法是大set套小set。小set排序,也就是大家所说的排序,但是这样会打乱原来小集合的顺序。 例如 {3,2,4}, {4, 2, 3}会输出 {2,3,4}。而原集合中没有这个集合。原本题意只是去除元素重复的小集合。 public class test { public static void main(String[] args) { Scanner input=new Scanner(System.in); int n=input.nextInt(); input.nextLine(); Set<Set<Integer>> set=new LinkedHashSet<>(); for(int i=0;i<n;i++){ Set <Integer> subSet=new TreeSet<Integer>(); String strings[]=input.nextLine().split(" "); for(int j=0;j<strings.length;j++) subSet.add(Integer.parseInt(strings[j])); set.add(subSet); } Iterator<Set<Integer>> it = set.iterator(); while(it.hasNext()){ System.out.print(it.next()+" "); } } }
点赞
回复
分享
发布于 2017-08-31 17:33
quqingxiu
重庆大学 算法工程师
遍历每个子集合,计算子集合的总和sum以及个数n,然后拼成键值sum#n,存到Set<String>中。如果下一个集合的键值sum#n在Set中存在,则表示该集合重复。
点赞
回复
分享
发布于 2017-08-31 15:04
海边听风
南京理工大学 Java
使用set集合类来做,先将得到的每个集合排序,然后将排序之后的集合放到set集合中,set集合会将重复的集合去掉,只保留单个不重复的集合。 代码如下: import java.util.Arrays; import java.util.LinkedHashSet; import java.util.LinkedList; import java.util.Scanner; import java.util.Set; /* * n个集合去重。 例如有3个集合 {1,2},{2,1},{3} * 但其实前两个属于同一个集合,去除重复的,最后输出两个集合{1,2},{3} * */ public class 集合去重 { public static void main(String[] args) { Scanner input=new Scanner(System.in); int n=input.nextInt(); input.nextLine(); Set<LinkedList<Integer>> set=new LinkedHashSet<>(); for(int i=0;i<n;i++){ LinkedList<Integer> list=new LinkedList<>(); String strings[]=input.nextLine().split(" "); int temp[]=new int[strings.length]; for(int j=0;j<strings.length;j++) temp[j]=Integer.parseInt(strings[j]); Arrays.sort(temp); for(int j=0;j<strings.length;j++) list.add(temp[j]); set.add(list); } System.out.println(set); input.close(); } }
点赞
回复
分享
发布于 2017-08-31 10:30
socialAnimal
龙王山邮电大学 Java
老铁现在有什么好的解法了吗?4楼的方法如何?
点赞
回复
分享
发布于 2017-08-31 10:23
这个世界是棵树
西安工业大学 Java
楼主实在哪个城市面试的?还问了其他什么问题吗?
点赞
回复
分享
发布于 2017-08-31 09:42
已删除
每输入一个集合,new一个HashSet放进去,然后用HashSet<HashSet> hashSets把这些new的HashSet实例都add进去就去重了,不知道这样用集合类符不符合要求。。。
点赞
回复
分享
发布于 2017-08-31 08:52
8点起24点睡
厦门大学 Java
大list包小list,在输入的时候用小list不断接收然后排序,然后!contains判断是否放入,最后返回大list
点赞
回复
分享
发布于 2017-08-31 00:43
OfferOfferOfferOfferOffer
西安电子科技大学 Java
这不是前几天中兴的笔试题吗,定义一个大arraylist<arraylist<integer>>里面包含生成的小的arraylist,这样一个个的去遍历给的集合,大arraylist里面包含有给的集合的其中一个数的,就把集合中不相同的数加进去大arraylist对应的小arraylist里面,遍历的该集合里面的数全部不在的,就心创建一个放进大arraylist里面
点赞
回复
分享
发布于 2017-08-31 00:31
全能
美团_rd
private static void deleteRepectList(ArrayList<ArrayList<Integer>> list) { HashMap<ArrayList<Integer>, Integer> map=new HashMap<>(); for (ArrayList<Integer> arrayList : list) { Collections.sort(arrayList); map.put(arrayList, 1); } for (ArrayList<Integer> arrayList : map.keySet()) { System.out.println(arrayList); } } 感觉复杂度还是够高
点赞
回复
分享
发布于 2017-08-31 00:30
见习精神病
天津财经大学 Java
把集合排序
点赞
回复
分享
发布于 2017-08-31 00:24
orange_fox
华中科技大学 算法工程师
mark 一记 。
点赞
回复
分享
发布于 2017-08-31 00:17
牛客第一菜
********* Java
实现一个toString(),然后hash
点赞
回复
分享
发布于 2017-08-31 00:11
暂无评论,快来抢首评~
相关推荐
昨天 15:58
天津大学 机械结构工程师
倒在阿里HR面
感觉很多人都挂在阿里的HR面阿里HR面试挂人的最主要原因是"感觉你不像阿里要的人"所以可以~ 1. 提前深入研究阿里人才标准 2. 使用阿里语言体系回答问题 3. 在面试中自然展现与阿里价值观的契合度 4. 保持积极、进取的面试状态
点赞
评论
收藏
分享
08-19 11:58
门头沟学院 Java
oppo二面挂
一面过秒接二面二面面试官问的很细,问了一个半小时左右回答的感觉还可以面完过了一阵看显示已通过但是再过几天就显示挂了...
点赞
评论
收藏
分享
07-16 15:29
北京外企德科人力资源服务上海有限公司_人事主管
作为hr,遇到的候选人越来约颠了……
每天都会遇到各种各样的人才,我要用魔法打败魔法🪄啊哈哈😂
机械打工仔:
以后他就明白6点能准时下班有多么珍贵
点赞
评论
收藏
分享
08-14 23:13
北京邮电大学 Java
京东零售 二面
你在学校里面做过哪些项目?你的技术栈什么?你在学校里面有没有竞赛专利,奖项?Java你大概学了多久?项目单个模块里面就说一下有哪些技术栈,涉及的表有哪些怎么设计这些表的。能说就是这几张表的设计,表里边的字段都涉及哪些,为什么这么设计呢?怎么做乐观锁,乐观锁是怎么解决超卖和一人一单的?如何保证数据一致性?举个例子,我再给这个库存里面再加东西,然后你怎么让 Redis 里边的数据和 MySQL 的数据是一致的?就是因为我这个库存还在上架,数据一直在变,这种极端场景是怎么处理的?解决了这个超卖,你有没有在就是压力的情况下去解决这个超卖的问题?就是多个用户去抢,有压力的情况下,在上库存的过程中,怎么去...
查看30道真题和解析
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
面试不要紧张,人生的容错率高的可怕
1.3W
2
...
(带面经)8.19 美团后端-大模型后台开发 已接
7776
3
...
一生闲不下来的国人
5546
4
...
美团 后端开发 一面
4588
5
...
千万不要进外包!华为的外包也不行!
4257
6
...
26前端校招 腾讯wxg 3面 面经
3730
7
...
铭记8.20
3730
8
...
测试、测开完整学习路线(纯干货)
3602
9
...
京东零售后端秋招一面
3449
10
...
8.14 腾讯TEG-云架构平台部-后台开发一面凉经
3265
创作者周榜
更多
正在热议
更多
#
面试太紧张了怎么办?
#
27685次浏览
424人参与
#
牛友们,签完三方你在忙什么?
#
104332次浏览
867人参与
#
你怎么看待AI面试
#
14040次浏览
173人参与
#
你喜欢工作还是上学
#
55223次浏览
581人参与
#
实习需要主动找活干吗?
#
16169次浏览
155人参与
#
大厂面试问八股多还是项目多?
#
14653次浏览
252人参与
#
供应链/物流校招攻略
#
8443次浏览
191人参与
#
你怎么评价今年的春招?
#
124812次浏览
1343人参与
#
联影求职进展汇总
#
35425次浏览
248人参与
#
业务面应该做哪些准备
#
7147次浏览
156人参与
#
转正答辩报告怎么写
#
6525次浏览
85人参与
#
你是如何祛除班味的
#
5142次浏览
90人参与
#
你有没有为省钱「拼过命」
#
6084次浏览
115人参与
#
你被mentor骂过吗?
#
25721次浏览
160人参与
#
秋招投递记录
#
48460次浏览
550人参与
#
机械求职避坑tips
#
56626次浏览
397人参与
#
运营人求职交流聚集地
#
156909次浏览
1010人参与
#
如果再来一次,你还会学硬件吗
#
130521次浏览
1423人参与
#
移动求职进展汇总
#
6521次浏览
66人参与
#
简历无回复,你会继续海投还是优化再投?
#
94617次浏览
787人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务