
编程之美
文章平均质量分 74
lonelycatcher
爱谷歌,爱豆瓣,爱python
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
由《编程之美》光影切割问题引出的-----求数组逆序数
编程之美1.7的一道光影切割问题,经过分析之后,可以简化为一个求逆序数的问题,当然求逆序数可以用非常暴力的O(N^2)的解法,但是,如果你正在接受一个面试,给出了O(N^2)的解法的话,面试官一定不会满意,对你的印象也大打折扣,所以这里主要是讲解一些求逆序数的一些高效方法。以poj上的一道题目为例http://poj.org/problem?id=2299方法一:分治算法我们知道排序中原创 2012-08-25 18:28:44 · 2311 阅读 · 3 评论 -
<编程之美>求一个整数的二进制表示1的个数
方法一:最最容易想到的方法,先加上二进制最后一位,通过&1可以得到,然后原数除以二int getCount(int number){ int ans = 0; while(number) { ans += num&1; num >>=1; } return ans;}方法二:如何消除最后一个1呢,这里我们想到,如何判断一个数是不是2的整数次幂呢,分析一下规律,如原创 2012-09-05 09:09:42 · 1607 阅读 · 0 评论 -
《编程之美》小飞的电梯调度算法
亚洲微软研究院所在的希格玛大厦一共有6部电梯。在高峰时间,每层都有人上下,电梯每层都停。实习生小飞常常会被每层都停的电梯弄的很不耐烦,于是他提出了这样一个办法:由于楼层并不算太高,那么在繁忙的上下班时间,每次电梯从一层往上走时,我们只允许电梯停在其中的某一层。所有乘客从一楼上电梯,到达某层后,电梯停下来,所有乘客再从这里爬楼梯到自己的目的层。在一楼的时候,每个乘客选择自己的目的层,电梯则计算出原创 2012-08-27 10:18:09 · 10503 阅读 · 6 评论 -
最近点对问题
在二维平面上的n个点中,如何快速的找出最近的一对点,就是最近点对问题。 一种简单的想法是暴力枚举每两个点,记录最小距离,显然,时间复杂度为O(n^2)。 在这里介绍一种时间复杂度为O(nlognlogn)的算法。其实,这里用到了分治的思想。将所给平面上n个点的集合S分成两个子集S1和S2,每个子集中约有n/2个点。然后在每个子集中递归地求最接近的点对。在这里,一个关键的问题是如转载 2012-09-12 22:52:04 · 34782 阅读 · 4 评论