http://greemranqq.iteye.com/blog/2069056
在上面的地址看到了一个百度面试的题目:怎么找出{1,1,2,3,3,4,4,4,5,5,5,5} 找出出现次数为奇数的数字.
个人总结了一下,在上面博文加评论里面共提到了2种方法.
1)使用一个数组来记录出现的次数,数组下标为对应的数,数组的值为出现的次数
2)使用BitMap来实现,这样可以用非常小的内存记录非常大的值域范围,只需要1位就可以记录一个Int. 并且用这一位的值,就可以反应出奇偶次数
我想到了另外一种方法(方法3), 使用集合Set来存储出现次数为奇数的数.直接过滤次数为偶数的数.
import java.util.HashSet; import java.util.Set; public class Interview { public static Integer[] input = { 1, 1, 2, 3, 3, 4, 4, 4, 5, 5, 5, 5 }; public static void main(String[] args) { //用来存储最终奇数结果 Set<Integer> resultSet = new HashSet<Integer>(); for (Integer element : input) { if (resultSet.contains(element)) { //如果已经出现(说明是偶数),就删除 resultSet.remove(element); } else { //如果没有找到,说明是奇数次 resultSet.add(element); } } //遍历,打印结果 for (Integer element : resultSet) { System.out.println(element); } } }
这个方法解决了下面的问题(只提优点,缺点就不说了^__^)
1)对比方案一,不需要预先初始化一个大数组.特别是输入List重复度比较高的时候,就会节省空间.
2)在打印最后结果时,上面2种方法都需要重新遍历一个小的集合才能得到次数为奇数的数字.集合的大小,取决于输入的List的里面的最大值和最小值的差值.
3)上面2种方法,都一定程度上为出现偶数次的数准备了空间,存在一定的浪费.如果使用Set只存储出现奇数次的数,如果恰好每个数出现的顺序相对集中时会比较节省空间.如果这个List比较稀疏,方案3也会比较节省空间.
相关推荐
java面试题! java面试题! java面试题! java面试题! java面试题! java面试题!
VUE面试题三.zipVUE面试题三.zipVUE面试题三.zipVUE面试题三.zipVUE面试题三.zipVUE面试题三.zipVUE面试题三.zipVUE面试题三.zipVUE面试题三.zipVUE面试题三.zipVUE面试题三.zipVUE面试题三.zipVUE面试题三.zipVUE...
百度Android工程师面试题(2024版) 百度Android工程师面试题(2024版) 百度Android工程师面试题(2024版) 百度Android工程师面试题(2024版) 百度Android工程师面试题(2024版) 百度Android工程师面试题(2024...
标题中的“答复: 一道经典线程面试题的4种解法”暗示了这是一个关于多线程编程的问题,通常在面试中出现,用于评估候选人的并发处理能力。在这个问题中,可能涉及到同步、线程安全、锁机制等关键概念。 在Java中,...
JavaOOP面试题 Java集合/泛型面试题 Java异常面试题 Java中的IO与NIO面试题 Java反射面试题 Java序列化面试题 Java注解面试题 多线程&并发面试题 JVM面试题 Mysql面试题 Redis面试题 Memcached面试题 MongoDB面试题 ...
现在五块钱的付出,将来收获的可能是一份心仪的offer,干货满满,建议下载。...友情提示:本套面试题包括面试题900题+公司实战面试题400问,面试题已经整理好答案,公司题由于新收录没有答案,但非常有参考价值。
云计算面试题之ELK面试题,运维工程师必备云计算面试题之ELK面试题,运维工程师必备云计算面试题之ELK面试题,运维工程师必备云计算面试题之ELK面试题,运维工程师必备云计算面试题之ELK面试题,运维工程师必备...
【标题】:“百度面试题”通常指的是百度公司在招聘过程中可能会问到的问题集合,这些题目涵盖了技术、产品、设计、运营等多个领域,旨在测试应聘者的专业技能、思维逻辑以及问题解决能力。百度作为中国互联网巨头之...
"百度面试题总结"这个资料包很可能包含了百度在招聘过程中对C++程序员的考察点,帮助应聘者更好地准备面试。 C++的基础知识点包括: 1. **基本语法**:C++的基础始于了解变量、数据类型、运算符、流程控制(如if...
2010年百度面试题 2011年毕业的同学有用
百度2013年移动开发岗位面试题(南京)
阿里百度美团面试题合集 大数据面试题 100道 多线程面试59题(含答案) 最新JAVA面试题总结之基础/框架/数据库/JavaWeb/Redis BIO,NIO,AIO,Netty面试题 35道 BTA 常问的 Java基础39道常见面试题及详细答案 Dubbo面试...
【百度面试题大全】涵盖了多个IT领域的知识点,包括数据结构、算法、数据库理论以及市场营销策略。以下是这些知识点的详细说明: 1. **堆和栈的区别**:堆和栈是计算机内存管理的两种基本数据结构。栈是后进先出...
网盘下载pdf文件,包括常见前端面试题汇总,百度、阿里、腾讯校招面试题汇总,网盘下载pdf文件,65个文件
阿里面试20题 百度面试10题 华为面试10题 京东面试13题 腾讯面试37题 头条面试10题 项目经理面试常遇问题 经典面试题 程序员 IT经理 项目经理 面试题 研发经理 高级程序员 经典面试题
java 百度面试题
"百度 面试 软件测试 面试题"这三个标签分别对应了这份文件的三个主要方面,即百度公司、面试和软件测试面试题。这些标签可以帮助我们快速了解文件的内容和主题。 部分内容解读 在部分内容中,我们可以看到面试...
(完整版)运维面试题(含答案).pdf(完整版)运维面试题(含答案).pdf(完整版)运维面试题(含答案).pdf(完整版)运维面试题(含答案).pdf(完整版)运维面试题(含答案).pdf(完整版)运维面试题(含答案).pdf(完整版)运维面试题...
最全的j2EE面试题,题量大、经典,是我面试的整理试题 1、java笔试题大集合 2、各个公司面试题 3、J2EE初学者面试题 4、J2EE面试题(打码查错题) 5、java_华为笔试题 6、java常见面试题 7、java程序员面试宝典 8、...
大数据面试题V3.0完成了。共523道题,679页,46w+字,来源于牛客870+篇面经。 主要分为以下几部分: Hadoop面试题:100道 Zookeeper面试题:21道 Hive面试题:47道 Flume面试题:11道 Kafka面试题:59到 HBase面试题...