一道面试题的多种想法
来源:互联网 发布:两个表格找出不同数据 编辑:程序博客网 时间:2024/05/22 06:52
今偶然在论坛上遇到一面试题,虽然简单,但在各种解法中还是有很多值得借鉴的地方。本文目的在于锻炼思维,汲取一些好的思想。总结一下就是,首先根据问题设计数学模型,从而找到合适的算法;在代码书写方面要学会活用:布尔运算的返回值、||,&&逻辑运算、条件表达式、%求余运算、/除法运算等,从而可以使代码更加简洁。(wcdj 2010-3-10)
题目如下:
只允许使用一个循环,先输出1至10内的奇数,然后输出其中的偶数,结果应该是这样的:
1
3
5
7
9
2
4
6
8
来源:http://topic.csdn.net/u/20081114/18/ad521288-2901-4868-8430-77a0e01ae746.html?27095
第一种想法:利用循环直接先输出奇数再输出偶数。
关键点:用i控制循环次数,用j计算所要求的数字。
第二种想法:对第一种想法的改进,利用循环直接先输出奇数再输出偶数。
关键点:用i计算所要求的数字,构造一个数学中的函数:
f(x)=2x-1, x<=5
f(x)=2(x-5), x>5
或者:
上述方法更简洁点的方式为:(利用||和&&运算符的“短路原理”)
类似的思路,将遍历范围扩大一倍,即,2N
基于上个方法的改进:
利用数学上的求余运算,消除上述方法的判断:
再补充一种不用判断的方法,纯用算法实现:
类似上述的:
利用布尔运算,也可以不用判断:
还有一种简单的方法,利用条件表达式:
由上联想,将条件表达式和数学函数一起用:
第三种想法:利用循环分别将奇数和偶数存在数组的相应位置中。
关键点:对数组下标的计算。
第四种想法:设计一个类,在构造函数中打印奇数,在循环中打印偶数。
关键点:对类的设计。
一些奇特的方法
[1]
原理:
con表示控制台,输入指的是键盘,输出指的是显示器;
当然可以换成别的: 换成 prn 就会输出到打印机;换成 abc.txt 就输出到文件 abc.txt 了。
上述代码修改如下:
[2]
- 一道面试题的多种想法
- 一道链表的面试题想法
- 中兴的一道面试题
- 一道面试题的思考
- 微软的一道面试题
- 一道NEC的面试题
- 一道面试题的分析
- 一道数字的面试题
- 一道错误的面试题
- 一道公司的面试题
- google的一道面试题
- google的一道面试题
- 一道有趣的面试题
- 外企的一道面试题
- 一道C的面试题
- 腾讯的一道面试题
- 微软的一道面试题
- 一道以前的面试题
- 编写嵌入式Linux应用层驱动程序
- MFC中设置焦点
- 七个受用一生的心理寓言
- Google App Engine: RUN JSP ERROR
- MAC与IP
- 一道面试题的多种想法
- 微软的.NET逆向步骤简论
- 计算机的世界是这样的。。。。
- 关于 Eclipse中运行Nutch No URLs to fetch的问题解决
- FlexBuilder 快捷键
- 在Windows下使用Python编程
- Git和Repo扫盲——如何取得Android源代码
- 自定义ie右键菜单
- jquery+ajax无刷新翻页