首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
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
暂无评论,快来抢首评~
相关推荐
07-21 17:56
门头沟学院 运营
经历过三段大厂实习后,我发现……
流动性超乎你的想象(我在的几个月,就能经历多个正职离职,有的主动提离职了、有的业务直接砍了……钱比命重要(有些年纪偏大了的同事,生病了也不敢请假怕被优化,整个人都没有光亮了。周末on call 是常态,加班到凌晨也是!!!)汇报比多做更能晋升,会说也是一种能力。说实话,一个项目是一个团队的成果,谁做多做少都很难量化,可能ta只是稍微润色一下就能写成都是ta的结果)不要想着和同事交朋友(尤其是吐槽的话,千万别说,你们是竞争关系,ta随手截图交给mt,你就完了。你们只是上班饭搭子,下班根本不会有任何联系。)看到很多黑色真相,但还是难以对大厂祛魅(福利待遇真的好)秋招还是会拼死卷进去,可能我就是有点...
实习生的蛐蛐区
点赞
评论
收藏
分享
07-17 11:46
西安电子科技大学 硬件开发
秋招小米挂
晚上投完第二天就挂了,我还感觉和岗位职责挺契合的呢
投递小米集团等公司7个岗位
点赞
评论
收藏
分享
07-03 02:02
西安工业大学 嵌入式软件工程师
救一下啊
来个大佬救一下,为什么26届实习这么难找,基本上投了都是石沉大海了,目前就拿了一个面试,没实习经历的话怕秋招直接进不了面,我八股水平又不太好😭😭
求求offer的河老...:
嵌入式现在就这样,软开卷的爆炸,我感觉比java卷
点赞
评论
收藏
分享
06-23 11:28
门头沟学院 Java
这一块儿/.
这一块儿/.
牛客91966197...:
也有可能是点拒绝的时候自动弹的话术
点赞
评论
收藏
分享
不愿透露姓名的神秘牛友
07-21 13:38
26届找实习这么难的吗
8月实习会变多吗现在还没找到实习该怎么办...回复的hr好少
码农索隆:
3-4月就要开始找,基本上6月份就发offer,7月初已经开始暑期实习了。
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
实习,你就这么偷
6536
2
...
20250716 - 百度 - 后端开发 - 一面
6190
3
...
关于牛土兵教育割韭菜的事实
4679
4
...
百度提前批后端一面 —— 亚历山大,特批拿下
4201
5
...
为什么有人说 211 以下就进不了大厂了?
4201
6
...
滴滴提前批面经
3665
7
...
27届前端七月找实习记录
3112
8
...
滴滴提前批凉经(一面,二面)
2003
9
...
再再再再强调一遍!秋招不要装逼
1989
10
...
百度提前批
1934
创作者周榜
更多
正在热议
更多
#
校招阶段,学历VS技术哪个更重要?
#
8447次浏览
108人参与
#
顺丰求职进展汇总
#
52716次浏览
283人参与
#
不卡学历的大厂有哪些?
#
14615次浏览
108人参与
#
腾讯音乐求职进展汇总
#
96744次浏览
563人参与
#
没有合适的工作,你会先找个干着,还是考公考研
#
121050次浏览
1144人参与
#
除了主业以外,你还有哪些其他收入?
#
5805次浏览
101人参与
#
实习时,大家都怎么称呼自己的mentor?
#
42815次浏览
270人参与
#
摸鱼被leader发现了怎么办
#
60466次浏览
369人参与
#
视觉/交互/设计招聘信息汇总
#
17909次浏览
612人参与
#
社恐入职新公司如何融入团队
#
10656次浏览
62人参与
#
实习如何「偷」产出?
#
23530次浏览
278人参与
#
风评不好的公司,你会去吗?
#
44504次浏览
319人参与
#
考研可以缓解求职焦虑吗
#
53323次浏览
474人参与
#
职场新人体验
#
13682次浏览
144人参与
#
实习打杂,要跑路吗
#
11852次浏览
154人参与
#
校园里的破防时刻
#
6636次浏览
76人参与
#
金融财经春招备战日记
#
22494次浏览
134人参与
#
求职遇到的搞笑事件
#
121491次浏览
795人参与
#
听到哪句话就代表面试稳了or挂了?
#
175751次浏览
1394人参与
#
软开人,秋招你打算投哪些公司呢
#
107490次浏览
976人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务