- 浏览: 207019 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
yangdefeng95802:
也不换个行,这个谁爱看,估计你自己都不爱看!
CXF2.0.8+Spring+Hibernate -
l1i2n3y4u5n6:
你没有解惑,让我很迷惑
Apache2.2和tomcat集成更加简单了 -
micropang:
LJ
CXF2.0.8+Spring+Hibernate -
mayufenga1:
更本没说明白
Apache2.2和tomcat集成更加简单了 -
highriver:
什么公司,这样的人性。
Learning Day
在例子四的基础上,我们可以进行更加深入的分析,我们还是以100为例,我们其实在大部分情况下可以省略循环,如果数字的百位数以上包含1的个数为0,而十位数不为1,那么当个位数大于1以后,我们可以中断底层的循环,这样我们又节省了很多的运算:
public class GoogleFn {
private static int MAX = 1320000000;
private static int MAX2 = MAX / 10;
private static int MAX3 = MAX2 / 10;
private static int count(int n) {
int count = 0;
while (n > 0) {
int mod = n % 10;
if (mod == 1)
count++;
n = n / 10;
}
return count;
}
private static void method2() {
long start = System.currentTimeMillis();
int result = 20;
for (int i = 1; i < MAX3; i++) {
int number = i * 100;
int value = count(i);
for (int j = 0; j < 10; j++) {
for (int k = 0; k < 10; k++) {
if (value == 0 && j != 1 && k > 1) {
break;
}
int x = number + j * 10 + k;
result += value;
if (j == 1) {
result++;
}
if (k == 1) {
result++;
}
if (result == x && x != 0) {
print(x, start);
continue;
}
}
}
}
}
private static void print(int n, long start) {
System.out.println("Find " + n + ", "
+ (System.currentTimeMillis() - start) + "ms");
}
public static void main(String[] args) {
method1();
method2();
}
}
运行结果:
Find 1, 0ms
Find 199981, 16ms
Find 199982, 16ms
Find 199983, 16ms
Find 199984, 16ms
Find 199985, 16ms
Find 199986, 16ms
Find 199987, 16ms
Find 199988, 16ms
Find 199989, 16ms
Find 199990, 16ms
Find 200000, 16ms
Find 200001, 16ms
Find 1599981, 32ms
Find 1599982, 32ms
Find 1599983, 32ms
Find 1599984, 32ms
Find 1599985, 32ms
Find 1599986, 32ms
Find 1599987, 32ms
Find 1599988, 32ms
Find 1599989, 32ms
Find 1599990, 32ms
Find 2600000, 47ms
Find 2600001, 47ms
Find 13199998, 204ms
Find 35000000, 532ms
Find 35000001, 579ms
Find 35199981, 594ms
Find 35199982, 594ms
Find 35199983, 594ms
Find 35199984, 594ms
Find 35199985, 594ms
Find 35199986, 594ms
Find 35199987, 594ms
Find 35199988, 594ms
Find 35199989, 594ms
Find 35199990, 594ms
Find 35200000, 594ms
Find 35200001, 594ms
Find 117463825, 1860ms
Find 500000000, 8079ms
Find 500000001, 8079ms
Find 500199981, 8141ms
Find 500199982, 8141ms
Find 500199983, 8141ms
Find 500199984, 8141ms
Find 500199985, 8141ms
Find 500199986, 8141ms
Find 500199987, 8141ms
Find 500199988, 8141ms
Find 500199989, 8141ms
Find 500199990, 8141ms
Find 500200000, 8141ms
Find 500200001, 8141ms
Find 501599981, 8157ms
Find 501599982, 8157ms
Find 501599983, 8157ms
Find 501599984, 8157ms
Find 501599985, 8157ms
Find 501599986, 8157ms
Find 501599987, 8157ms
Find 501599988, 8157ms
Find 501599989, 8157ms
Find 501599990, 8157ms
Find 502600000, 8188ms
Find 502600001, 8188ms
Find 513199998, 8485ms
Find 535000000, 8844ms
Find 535000001, 8844ms
Find 535199981, 8844ms
Find 535199982, 8844ms
Find 535199983, 8844ms
Find 535199984, 8844ms
Find 535199985, 8844ms
Find 535199986, 8844ms
Find 535199987, 8844ms
Find 535199988, 8844ms
Find 535199989, 8844ms
Find 535199990, 8844ms
Find 535200000, 8844ms
Find 535200001, 8844ms
Find 1111111110, 18172ms
Find 199981, 16ms
Find 199982, 16ms
Find 199983, 16ms
Find 199984, 16ms
Find 199985, 16ms
Find 199986, 16ms
Find 199987, 16ms
Find 199988, 16ms
Find 199989, 16ms
Find 199990, 16ms
Find 200000, 16ms
Find 200001, 16ms
Find 1599981, 31ms
Find 1599982, 31ms
Find 1599983, 31ms
Find 1599984, 31ms
Find 1599985, 31ms
Find 1599986, 31ms
Find 1599987, 31ms
Find 1599988, 31ms
Find 1599989, 31ms
Find 1599990, 31ms
Find 2600000, 47ms
Find 2600001, 47ms
Find 13199998, 188ms
Find 35000000, 453ms
Find 35000001, 453ms
Find 35199981, 453ms
Find 35199982, 453ms
Find 35199983, 453ms
Find 35199984, 453ms
Find 35199985, 453ms
Find 35199986, 453ms
Find 35199987, 453ms
Find 35199988, 453ms
Find 35199989, 453ms
Find 35199990, 453ms
Find 35200000, 453ms
Find 35200001, 453ms
Find 117463825, 1406ms
Find 500000000, 6438ms
Find 500000001, 6438ms
Find 500199981, 6438ms
Find 500199982, 6438ms
Find 500199983, 6438ms
Find 500199984, 6438ms
Find 500199985, 6438ms
Find 500199986, 6438ms
Find 500199987, 6438ms
Find 500199988, 6438ms
Find 500199989, 6438ms
Find 500199990, 6438ms
Find 500200000, 6438ms
Find 500200001, 6438ms
Find 501599981, 6453ms
Find 501599982, 6453ms
Find 501599983, 6453ms
Find 501599984, 6453ms
Find 501599985, 6453ms
Find 501599986, 6453ms
Find 501599987, 6453ms
Find 501599988, 6453ms
Find 501599989, 6453ms
Find 501599990, 6453ms
Find 502600000, 6485ms
Find 502600001, 6485ms
Find 513199998, 6688ms
Find 535000000, 7031ms
Find 535000001, 7031ms
Find 535199981, 7031ms
Find 535199982, 7031ms
Find 535199983, 7031ms
Find 535199984, 7031ms
Find 535199985, 7031ms
Find 535199986, 7031ms
Find 535199987, 7031ms
Find 535199988, 7031ms
Find 535199989, 7031ms
Find 535199990, 7031ms
Find 535200000, 7031ms
Find 535200001, 7031ms
Find 1111111110, 14250ms
注意我们把MAX放大了100倍,这样才能看出差别,否则运算时间太短,就看不出来差异了。虽然这样做只提高了大约20%的性能,但是如果这个提升是发生在占用系统最多时间的部分,其累加效应将是惊人的。
评论
cherami 是不是没有理解题意!
value == 0 && j != 1 && k > 1 && result < number
这样才是万无一失,因为前三个条件对result没有影响,也就是不影响f(n)的结果,但是k增加的时候n是在变的,如果f(n)不变,而f(n)小于n,那么f(n+1)=f(n),所以f(n+1)必然小于n+1。
发表评论
-
Tomcat集群概要
2007-09-05 03:59 1957其实已经有很多文档了,不过还是老话,给自己备忘,总结些要注意的 ... -
Eclipse的一个问题
2007-09-05 06:13 1274最近遇到的,偶然间解决的,如果一些文件和目录已经被Worksp ... -
Java远程调试
2007-09-05 06:47 2269其实就是使用了JDK的JPDA,在启动服务器(Jboss或者T ... -
JDK5中没被重视的重要特性:instrumentation
2007-09-05 07:42 1617我们的产品中使用到这个特性了,主要是加载Jboss的AOP,另 ... -
得到当前方法
2007-08-09 13:53 1291在写代码的时候我们可能会需要当前的方法名,特别是在输出一些调试 ... -
使用AOP带来的问题
2007-08-02 04:57 1347AOP绝对是个好东西,但是因为大部分的AOP实现都是通过修改字 ... -
推荐一个Eclipse插件:Implementors
2007-08-01 05:06 1070也许有点老土了,但是这个插件确实是刚刚别人推荐给我的,而且很好 ... -
使用JBossCache作为Hibernate的二级缓存
2007-07-23 11:36 2047这个是最近的工作成果,使用JBossCache作为Hibern ... -
URLDataSource请求资源三次的问题
2007-07-13 04:58 1422这个是进公司的第二个任务,由于是多个应用服务器集群,而产生pd ... -
JSP的一个小误区
2007-07-12 11:15 949相信很多人在面试的时候都会被问到JSP和Servlet的区别, ... -
Hot Deploy成功
2007-07-12 11:24 1292前几天曾经抱怨新公司的开发环境太复杂,不能Hot Deploy ... -
文件删除不成功
2007-07-12 11:31 1046Java的功能在某些地方确实很有缺陷,File的delete方 ... -
AR何其多
2007-07-09 13:29 1144看了新公司的发布目录,感叹公司把Java相关的发布包用得出神入 ... -
太复杂了!!!
2007-07-03 12:58 1067今天总算是把工程在Eclipse下配置好了,而且没有任何错误, ... -
links for 2007-05-12
2007-05-12 14:21 1049Lucene Hack之通过缩小搜索结果集来提升性能 (1 ... -
Java序列化确实很慢啊
2007-04-25 06:37 2004我们的系统还使用古老的Ant1.5作为构建工具,而且做了一些定 ... -
使用工具修改代码时一定要谨慎
2007-04-19 03:21 1124今天早上来更新了下代码,发现自己负责的和Crystal Rep ... -
数据库可移植性重要吗?
2007-04-18 06:30 2070对于大部分应用而言,数据库可移植性可能不太重要,而一些完全使用 ... -
没落的Java社区
2007-04-17 09:27 1479感觉原来的几个Java社区日益没落,当然这个和Java世界的消 ... -
也谈Java基础的重要性
2007-04-10 07:33 2770呵呵,看到JDon上正在讨论j2se基础的重要性,忍不住也来说 ...
相关推荐
python编程老师面试题_python面试题五:Python编程
2021-最新大厂AI面试题q2版121题:含答案及解析21.7.23
c++面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试...
google面试题google面试题
JAVA面试题JAVA面试题JAVA面试题JAVA面试题JAVA面试题JAVA面试题
Java面试题集锦6:华为面试题 管理资料.pdfJava面试题集锦6:华为面试题 管理资料.pdfJava面试题集锦6:华为面试题 管理资料.pdfJava面试题集锦6:华为面试题 管理资料.pdfJava面试题集锦6:华为面试题 管理资料.pdf...
常见的性能测试工程师面试题(附答案) 找工作的好帮手
以后会慢慢把Java相关的面试题、计算机网络等都加进来,其实这不仅仅是一份面试题,更是一份面试参考,让你熟悉面试题各种提问情况,当然,项目部分,就只能看自己了,毕竟每个人简历、实习、项目等都不一样。面试题...
Jmeter怎么录制,怎么过滤,线程组有哪些内容? jmeter可以使用第三方的录制工具(badboy)或者使用自身的软件... ... 线程组包括:线程组名、注释、线程组中的用户数量、线程组在多少时间发送完请求、循环次数、时间调度
JavaOOP面试题 Java集合/泛型面试题 Java异常面试题 Java中的IO与NIO面试题 Java反射面试题 Java序列化面试题 Java注解面试题 多线程&并发面试题 JVM面试题 Mysql面试题 Redis面试题 Memcached面试题 MongoDB面试题 ...
大厂面试题解析(5):怎么设计一款老年人专用的ATM机?.docx
2023java最新阿里巴巴面试题2023java最新阿里巴巴面试题2023java最新阿里巴巴面试题2023java最新阿里巴巴面试题2023java最新阿里巴巴面试题2023java最新阿里巴巴面试题2023java最新阿里巴巴面试题2023java最新阿里...
面试题包含了不同技术层面的面试问题,同时也能对一些没有面试开发经验的小白给予不可估量的包装, 让你的薪水绝对翻倍, 本人亲试有效.Java面试题84集、java面试专属及面试必问课程,所有的面试题有视屏讲解, 解答方案....
JavaEE企业级开发的面试题汇总,内容包含了: 1.Java基础:JAVASE面试题 2.框架试题:springmvc,spring,mybatis,springdata,springboot,springcolud等企业级开发中常见到的面试题 3.数据库:有关MYSQL数据库的面试题...
每年招聘的时候,做笔试难免会遇到一些经典的面试题,而好多是google已经出过的
覆盖范围:(40个VUE3.0面试题PDF、CSS面试题、JS面试题、REACT面试题 全栈面试题、小程序面试题、性能优化) # 前端面试题 非常重要 难度都是根据自己学习情况掌握的。 - 不能只靠背面试题 要去理解 面试题背后的...
Google21道面试题 Google公司的面试 google面试题2 GOOGLE面试题--答案
c#笔试面试题 c#笔试面试题 c#笔试面试题 c#笔试面试题 c#笔试面试题
11谷歌面试题精讲
最新JAVA面试题总结之基础/框架/数据库/JavaWeb/Redis BIO,NIO,AIO,Netty面试题 35道 BTA 常问的 Java基础39道常见面试题及详细答案 Dubbo面试题 47道 ElasticSearch面试题 30道 Git常用命令面试题 60道 Java并发...