首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
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
暂无评论,快来抢首评~
相关推荐
11-20 16:44
西安电子科技大学 Java
为什么面试问的越详细反而没有后文了?
作为一名摸爬滚打了八年的Java开发者,经历了无数次面试与被面试,我观察到一个令人费解的现象:有时面试官问得越深入、越细致,仿佛对你的技术了如指掌,最终却石沉大海,再无回音。 这背后并非偶然,而是不同规模公司对人才需求的底层逻辑差异所致。结合我的亲身经历和思考,我认为核心在于:大厂赌的是你的“潜力”,而中小厂要的是你“立刻能干活”。🧠 大厂视角:深挖是为了验证潜力与深度思考能力在大厂的面试经历中(无论是作为候选人还是面试官),我深刻体会到他们对“问得深”有着不同的目标:“剥洋葱式”提问不是为了刁难,而是考察思维深度: 当面试官不断追问“这个方案为什么最优?”、“如果并发量再增加十倍,瓶颈在哪...
我发现了面试通关密码
点赞
评论
收藏
分享
11-19 15:47
百度_高级研发工程师
北京挣钱北京花,一分别想带回家
这边单独说一下北京吧,别的地方我住的不是很久,也不是很了解,从我2020年来北京,到现在也有五年了,五年期间,我换了4套房子,整体的租金是一直上升的,因为由俭入奢易,由奢入俭难。 接下来,我将从衣食住行来讲讲,北京最低生存消费在多少。一、衣 这里不光说穿衣服的事啊,就是包括日化用品,服装被套,都算在内,如果不多话的话,几百到一千应该是够了,这块没有什么好太多说的,就按最低成本来算吧,毕竟每个人花销不一样。二、食 嗯,大城市的吃饭是真的贵,当初我在大学,一份炒面6块钱,吃的饱饱的,现在吃饭,20多起步,这算普通的了,遇到贵的,30多,40-50都不稀奇,算一天吃饭50(已经很省了),一个月也要1...
点赞
评论
收藏
分享
11-03 13:18
山东理工大学 Java
字节意向啦哈哈
双非本3个月拿下字节转正,运气好到家了呜呜
包行:
平时怎么刷算法题的哇,字节的手撕听说都很难
字节跳动工作体验
点赞
评论
收藏
分享
11-07 10:05
石家庄市第一职业中专学校 后端工程师
避雷,骗子公司
BOSS面了三轮的Java软件开发,线上说后端十几个人,不是低代码开发,来了一看后端6个人,招了4个实习生,用的还是若依低代码,你几个人不会说明白,开发的什么项目说清楚嘛,全是骗子,南京骗子多
StephenZ_:
我9月份找的第一段实习也是遇到这种骗子公司了,问他后端有多少人和我说7个正职,进去一看只有一个后端剩下的都是产品前端算法(没错甚至还有算法)。还是某制造业中大厂,我离职的时候还阴阳怪气我
点赞
评论
收藏
分享
11-20 14:04
江苏网商精益管理软件有限公司_工程部_后端开发(实习员工)
offer 选择
现在有两个计算机后端offer,总包基本相同1.作业帮-武汉-中台产研中心/售卖平台部/售卖平台研发部2.科大讯飞-合肥-教育BG的技术平台部两个到手应该差不多,从业务公司角度考虑去哪家 #如果可以选,你最想去哪家公司##秋招,不懂就问##26届秋招总结##秋招的嫡长offer#
投递作业帮等公司10个岗位
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
玩脱了,偷走老板4万块
1121
2
...
大家不是好奇自己的面评长什么样子吗?
1067
3
...
【现金奖励】26秋招薪资爆料征集,瓜分现金红包!
1053
4
...
挑战一篇讲完实习转正
1039
5
...
最恐怖的一集 测开也卷了
999
6
...
deep seek把人当傻子耍
881
7
...
28届一直想找实习但是不敢开始怎么办
817
8
...
大厂面试官:实习期间有没有参与处理过线上问题?拿走直接抄答案!
728
9
...
互联网大厂程序员?我祛魅了
715
10
...
字节谈薪经验帖
666
创作者周榜
更多
正在热议
更多
#
找实习是选平台还是选业务?
#
1625次浏览
20人参与
#
记录实习开销
#
165824次浏览
641人参与
#
百度秋招
#
53598次浏览
391人参与
#
OC/开奖
#
208611次浏览
1383人参与
#
科大讯飞工作体验
#
29831次浏览
73人参与
#
秋招疯了,看什么都像offer
#
18930次浏览
130人参与
#
腾讯音乐秋招
#
432639次浏览
4790人参与
#
应届生第一份工作最好去大厂吗?
#
86726次浏览
884人参与
#
材料转码还有必要吗?
#
32762次浏览
153人参与
#
华为工作体验
#
243960次浏览
1304人参与
#
实习学到最有价值的工作习惯
#
42021次浏览
368人参与
#
办公室恋情是职场大忌吗
#
10924次浏览
21人参与
#
设计人的面试记录
#
167650次浏览
1546人参与
#
华为池子有多大
#
125072次浏览
811人参与
#
你知道哪些职场黑话?
#
65450次浏览
454人参与
#
电信求职进展汇总
#
29296次浏览
159人参与
#
招银网络科技工作体验
#
26082次浏览
95人参与
#
实习生应该准时下班吗
#
318257次浏览
1718人参与
#
研究所VS国企,该如何选
#
226621次浏览
1944人参与
#
CVTE求职进展汇总
#
27027次浏览
327人参与
#
移动求职进展汇总
#
14324次浏览
119人参与
#
蚂蚁求职进展汇总
#
134102次浏览
1214人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务