由一个面试题引发的思考
2011-03-06 17:22
260 查看
最近找工作面试基本上都要做笔试题目,上周去了一家公司,具体名字就不说了,有一道算法题,从1+2-3+4-5+..N,要求给一个参数N,计算结果。当时看到这题的第一思路是这样的。循环遍历N个数,申明一个变量,如果当前数是偶数,就加上这个数,如果是偶数就减去这个数,最后返回这个临时变量。最后把笔试题目给技术经理看了,他说这样做没有问题,但是问我有没有考虑过这样一个问题,就是当N是一个无限大的数时,会有什么问题,当时立刻想到了性能问题,无限循环回造成程序死掉。他问我有没有其他的办法,我当时考虑了下,说有,但是需要点时间来考虑。
最后回来后研究了下,发现有规律可循,
1+2-3+4-5,可以这样看,1+(2-3)+(4-5),通过这种规律就可以用数学问题来解决了。具体的代码如下:
通过这个面试题让我感受到对待一个问题要多方面思考,不能只用一种思维模式去考虑问题。
最后回来后研究了下,发现有规律可循,
1+2-3+4-5,可以这样看,1+(2-3)+(4-5),通过这种规律就可以用数学问题来解决了。具体的代码如下:
public int GetResult(int N) { int result = 0; for (int i = 1; i <= N; i++) { if (i % 2 == 0) { result += i; } else { if (i == 1) { result += i; } else { result -= i; } } } return result; } public int GetResult2(int N) { int result = 0; if (N % 2 == 0) { result = 2 + N / 2; } else { result = 1 - N / 2; } return result; }
通过这个面试题让我感受到对待一个问题要多方面思考,不能只用一种思维模式去考虑问题。
相关文章推荐
- 由一个创建100G的表空间的面试题引发的思考
- 一个java面试题引发的思考
- 一个面试题引发的思考(Java的值传递)
- 一个面试题引发的思考:Android应用退出时候,关闭所有的Activity
- 由一个面试题引发的思考
- 谈“+”,你真的了解么?一个面试题引发的思考------2017.10.19
- 有一个面试题引发的思考
- 一个古老的面试题给我们的思考
- 关于一个MSS值引发的疑案的思考
- 《Windows图形编程》中的一个例程所引发的收获和思考
- 两道面试题所引发的C指针的思考
- 一个JAVA题引发的思考
- 一个典型的多表参与连接的复杂SQL调优(SQL TUNING)引发的思考
- 一个宝贝引发的深层次思考
- 一个“强制转换”的例子引发的思考
- 一个帖子引发的思考(引用,条件判断,优先级)
- Adnroid一个例子引发的思考
- 一道面试题引发的思考
- 一个编程小题目引发的思考
- 读《一个递归引发的思考》有感 ——“码小农”第一期