走在架构师的大道上 Jack.Wang's home

Java, C++, linux c, C#.net 技术,软件架构,领域建模,IT 项目管理 Dict.CN 在线词典, 英语学习, 在线翻译

BlogJava 首页 新随笔 联系 聚合 管理
  195 Posts :: 3 Stories :: 728 Comments :: 0 Trackbacks

数学&算法

涵盖 MS,IBM 等公司面试算法题目,以及经典算法的 java 实现
     摘要: 最近设计知识管理系统的资源导入功能,为了尽量的做到组件化,方便扩展,方便其他模块使用。简化组件提供的和需要的接口,设计并实现了基于 Mapping 机制的导入框架。其中有一功能用到了计算两个字符串相似度的算法。  阅读全文
posted @ 2009-01-19 23:53 Jack.Wang 阅读(10945) | 评论 (9)  编辑

     摘要: 阶乘是个很有意思的东西,可能很多朋友看到关于他的计算就怕了,其实没什么,看完下面两个问题您应该有低了。
1. 给定一个 N ,求出N!末尾有多少个零,比如 N=10,N!=3628800,N!末尾有两个零。
2. 求N!的二进制表示中最低为1的位置,比如 11010010, 最低为1的位置为2。

问题一解法:

在上一个 blog 中介绍的子数组乘积最大值的问题中,有朋友考虑到溢出的问题,在这个问题中,我们从那些数相乘能得到10这个命题开始思考。比如N!=K×10m那么N!后面就有m个零。这个问题转化为将N!进行分解,如N!=2a×3b×5c 很显然 10=2×5,那么零的个数m=min(a,c), 一个数能够被2整除的机率比5要大很多因此 m=c,因此转化为求 c的问题,具体算法如:
  阅读全文
posted @ 2008-10-18 12:05 Jack.Wang 阅读(4246) | 评论 (1)  编辑

     摘要: 给定一个长度为N的整数数组,只允许用乘法,计算任意(N-1)个数的组合乘积中最大的一组,并
写出算法的时间复杂度。  阅读全文
posted @ 2008-10-17 12:43 Jack.Wang 阅读(4777) | 评论 (11)  编辑

     摘要: 给定一个十进制数N,写下从1开始,到N的所有整数,然后数一下其中出现的所有"1"的个数。
例如:
N=2,写下1,2。这样只出现了1个"1"
N=12,写下 1,2,3,4,5,6,7,8,9,10,11,12。这样"1"的个数是5
请写出一个函数,返回1到N之间出现"1"的个数,比如 f(12)=5  阅读全文
posted @ 2008-10-16 18:10 Jack.Wang 阅读(4101) | 评论 (11)  编辑

     摘要: 在这之前,先介绍一下负载因子和容量的属性。大家都知道其实一个 HashMap 的实际容量就 因子*容量,其默认值是 16×0.75=12; 这个很重要,对效率很一定影响!当存入HashMap的对象超过这个容量时,HashMap 就会重新构造存取表。这就是一个大问题,我后面慢慢介绍,反正,如果你已经知道你大概要存放多少个对象,最好设为该实际容量的能接受的数字。  阅读全文
posted @ 2008-10-06 21:24 Jack.Wang 阅读(1384) | 评论 (0)  编辑

     摘要: 一个对象的HashCode就是一个简单的Hash算法的实现,虽然它和那些真正的复杂的Hash算法相比还不能叫真正的算法,它如何实现它,不仅仅是程序员的编程水平问题,而是关系到你的对象在存取是性能的非常重要的关系.有可能,不同的HashCode可能会使你的对象存取产生,成百上千倍的性能差别。
  阅读全文
posted @ 2008-09-08 20:53 Jack.Wang 阅读(5242) | 评论 (2)  编辑