`
flyfoxs
  • 浏览: 297755 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

百度一道面试题的三种解法

    博客分类:
  • JAVA
 
阅读更多

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面试题! java面试题!

    VUE面试题三.zip

    VUE面试题三.zipVUE面试题三.zipVUE面试题三.zipVUE面试题三.zipVUE面试题三.zipVUE面试题三.zipVUE面试题三.zipVUE面试题三.zipVUE面试题三.zipVUE面试题三.zipVUE面试题三.zipVUE面试题三.zipVUE面试题三.zipVUE...

    百度Android工程师面试题(2024版).zip

    百度Android工程师面试题(2024版) 百度Android工程师面试题(2024版) 百度Android工程师面试题(2024版) 百度Android工程师面试题(2024版) 百度Android工程师面试题(2024版) 百度Android工程师面试题(2024...

    答复: 一道经典线程面试题的4种解法

    标题中的“答复: 一道经典线程面试题的4种解法”暗示了这是一个关于多线程编程的问题,通常在面试中出现,用于评估候选人的并发处理能力。在这个问题中,可能涉及到同步、线程安全、锁机制等关键概念。 在Java中,...

    10万字总结java面试题和答案(八股文之一)Java面试题指南

    JavaOOP面试题 Java集合/泛型面试题 Java异常面试题 Java中的IO与NIO面试题 Java反射面试题 Java序列化面试题 Java注解面试题 多线程&并发面试题 JVM面试题 Mysql面试题 Redis面试题 Memcached面试题 MongoDB面试题 ...

    2020年前端面试真题(阿里、网易、滴滴等)文件为百度网盘链接永久有效

    现在五块钱的付出,将来收获的可能是一份心仪的offer,干货满满,建议下载。...友情提示:本套面试题包括面试题900题+公司实战面试题400问,面试题已经整理好答案,公司题由于新收录没有答案,但非常有参考价值。

    云计算面试题之ELK面试题,运维工程师必备云计算面试题之ELK面试题,运维工程师必备云计算面试题之ELK面试题,运维工程师必备云

    云计算面试题之ELK面试题,运维工程师必备云计算面试题之ELK面试题,运维工程师必备云计算面试题之ELK面试题,运维工程师必备云计算面试题之ELK面试题,运维工程师必备云计算面试题之ELK面试题,运维工程师必备...

    百度面试题

    【标题】:“百度面试题”通常指的是百度公司在招聘过程中可能会问到的问题集合,这些题目涵盖了技术、产品、设计、运营等多个领域,旨在测试应聘者的专业技能、思维逻辑以及问题解决能力。百度作为中国互联网巨头之...

    百度面试题总结

    "百度面试题总结"这个资料包很可能包含了百度在招聘过程中对C++程序员的考察点,帮助应聘者更好地准备面试。 C++的基础知识点包括: 1. **基本语法**:C++的基础始于了解变量、数据类型、运算符、流程控制(如if...

    2010年百度校园面试题

    2010年百度面试题 2011年毕业的同学有用

    百度2013年面试题

    百度2013年移动开发岗位面试题(南京)

    2023最新JAVA面试题集

    阿里百度美团面试题合集 大数据面试题 100道 多线程面试59题(含答案) 最新JAVA面试题总结之基础/框架/数据库/JavaWeb/Redis BIO,NIO,AIO,Netty面试题 35道 BTA 常问的 Java基础39道常见面试题及详细答案 Dubbo面试...

    百度面试题大全

    【百度面试题大全】涵盖了多个IT领域的知识点,包括数据结构、算法、数据库理论以及市场营销策略。以下是这些知识点的详细说明: 1. **堆和栈的区别**:堆和栈是计算机内存管理的两种基本数据结构。栈是后进先出...

    前端面试题(包括百度阿里腾讯面试题).txt

    网盘下载pdf文件,包括常见前端面试题汇总,百度、阿里、腾讯校招面试题汇总,网盘下载pdf文件,65个文件

    阿里面试题 腾讯面试题 百度面试题 华为面试题 京东面试题 头条面试题 经典面试题 程序员 IT经理 项目经理 面试题

    阿里面试20题 百度面试10题 华为面试10题 京东面试13题 腾讯面试37题 头条面试10题 项目经理面试常遇问题 经典面试题 程序员 IT经理 项目经理 面试题 研发经理 高级程序员 经典面试题

    java 百度面试题 java 百度面试题

    java 百度面试题

    百度面试软件测试题

    "百度 面试 软件测试 面试题"这三个标签分别对应了这份文件的三个主要方面,即百度公司、面试和软件测试面试题。这些标签可以帮助我们快速了解文件的内容和主题。 部分内容解读 在部分内容中,我们可以看到面试...

    (完整版)运维面试题(含答案).pdf

    (完整版)运维面试题(含答案).pdf(完整版)运维面试题(含答案).pdf(完整版)运维面试题(含答案).pdf(完整版)运维面试题(含答案).pdf(完整版)运维面试题(含答案).pdf(完整版)运维面试题(含答案).pdf(完整版)运维面试题...

    java面试题,J2EE面试题 笔试题

    最全的j2EE面试题,题量大、经典,是我面试的整理试题 1、java笔试题大集合 2、各个公司面试题 3、J2EE初学者面试题 4、J2EE面试题(打码查错题) 5、java_华为笔试题 6、java常见面试题 7、java程序员面试宝典 8、...

    牛客大数据面试题集锦+答案,共523道,46W+字。大厂必备

    大数据面试题V3.0完成了。共523道题,679页,46w+字,来源于牛客870+篇面经。 主要分为以下几部分: Hadoop面试题:100道 Zookeeper面试题:21道 Hive面试题:47道 Flume面试题:11道 Kafka面试题:59到 HBase面试题...

Global site tag (gtag.js) - Google Analytics