
编程之美学习笔记
文章平均质量分 80
pirates
乐观 开朗 努力 向上
展开
-
如何让CPU的占用率曲线听你指挥
如何让CPU的占用率曲线听你指挥 写一个程序让用户来决定任务管理器的Cpu占用率。 如何让CPU的占用率曲线固定在50%,保持一条直线? 拿到这个问题不要着急,好好想一下。Think about it。什么是占用率?在一个Cpu的刷新周期里Cpu的使用与总的资源的百分比,那如何让CPU一会忙,一会闲呢?想一想,我们平时鼠标的移动都会造成Cpu曲线的变化,忙的时候我们可以执行空的循环,可原创 2013-07-11 10:42:05 · 1234 阅读 · 0 评论 -
Find发帖水王哥
找到水王传说贴吧有一大“水王”,他不但喜欢发帖,还会回复其他ID发的每个帖子。坊间风闻该“水王”发帖数目超过了帖子总数的一半。如果你有一个当前论坛上所有帖子(包括回帖)的列表,其中帖子作者的ID也在表中,你能快速找出这个传说中的贴吧水王吗?这个问题的意思就是从一个有很多ID的列表中找到一个数目超过总数一半的ID。也就是数组中有一个数字出现的次数超过了数组长度的一半,找出这个数字。先来思原创 2013-07-08 15:59:04 · 1775 阅读 · 0 评论 -
求数组中最长递增子序列
求数组中最长递增子序列 写一个时间复杂度尽可能低的程序,求一个一维数组(N个元素)中的最长递增子序列的长度。例如:在序列1,-1,2,-3,4,-5,6,-7中,其最长的递增子序列为1,2,4,6。最长递增子序列Lis的长度是4; 求一维数组中的最长递增子序列,也就是找一个标号的序列b[0],b[1],…,b[m](0 … ,使得array[b[0]]…。 真正求Lis是有难度的,对于每一原创 2013-07-23 14:05:37 · 3110 阅读 · 0 评论 -
寻找最小的K个数
“五分化中项的中项”划分法: 1 将输入数组的N个元素划分为[n/5]组,且至多只有一个组有剩下的n mod5组成。 2 寻找这个[n/5]组中没一组的中位数:首先对每组的元素进行插入排序,排序后选出中位数。 3 对第二步找出的[n/5]个中位数,继续递归找到其中位数x。 4 按中位数的中位数x进行partition划分,然后就是select算法。可以证明的是该划分可以在最坏情况下保证O(n)的时间复杂度。原创 2013-07-19 10:30:04 · 3985 阅读 · 1 评论 -
求1-N中十进制正整数1的个数
给你一个十进制的正整数N,求1-N所有数中出现“1”的的数目。比如 N=2: 1 2 ,1的个数的1. N=5: 1 2 3 4 5 ,1的个数是1。 N=12:1 2 3 4 5 6 7 8 9 10 11 12 ,1的个数是5. 希望你能写一个函数F(N),返回1-N之间出现1的个数,F(12)=5;如何求得? 遍历?对,原创 2013-07-14 12:35:18 · 2163 阅读 · 0 评论 -
位操作技巧和总结
位操作问题 先来看一个编美上面的一个题目:对于一个字节的变量,如何求得其二进制中“1”的个数,要求效率尽可能的高。二进制数有啥特征,无非是1、0;比如(10)10=(0000 1010)2 。除以2,就相当于右移一位,如果得到0,就表示那一位是0,如果得到1,就表示那一位是1.。看起来很简单的嘛,So easy啊。 编码实现: int Count(char n) { in原创 2013-07-10 12:28:05 · 2044 阅读 · 0 评论 -
如何求500万以内的所有亲和数
求500万以内的所有亲和数 如果两个不同的数a和b,a的所有真因数之和等于b,b的所有真因数之和等于a,则称a,b是一对亲和数。例如220和284,1184和1210,2620和2924。编程实现。 想一想这个问题,首先你要弄清楚,什么是亲和数,什么是真因子。除了本身之外的都是所以因子都是真因子,包括1。那亲和数就好比这两个数所有真因子之和等于对方,这俩是一对,亲和数。 举例:220的真因子是原创 2013-07-09 11:16:22 · 2584 阅读 · 0 评论 -
阶乘问题
阶乘问题 给你一个整数N,希望求得N!的末尾有几个0。10!=3628800,末尾有2个0. 如何解答?很简单嘛,求其阶乘,然后对10求模就可以了啊。是吗?如果是1000的阶乘呢?会不会溢出呢?这确实是一个问题,那如何解答呢?好好想一想。 末尾的0和谁有关系?当然是和10 。那10又和谁有关系?10=2*5 。而N!=1*2*3**N; 那么,两者有什么关系吗?当然。先对N进行质因数分原创 2013-07-10 11:47:44 · 1518 阅读 · 0 评论 -
中国象棋将帅问题
将帅问题 俗话说的好,将帅不见面,见面分胜负。残局之中只有将帅,如何保持僵局?假设A表示将,B表示帅。如何输出他们的合法位置?请写一个程序来输出。 当你看到这个题目的时候,可能感觉很简单,无非是两个个for循环而已,只要A、B不在同一列即可。可是你如何表示表示棋盘,如何表示棋局呢?很麻烦?是吧 哈哈,其实这根本不是重点,棋局什么的都不重要,重要的是A、B的合法位置。这个时候原创 2013-07-11 10:35:10 · 2052 阅读 · 0 评论 -
最短摘要问题
最短摘要问题 Alibaba笔试题:给定一段产品的英文描述,包含M个英文字母,每个英文单词以空格分隔,无其他标点符号;再给定N个英文单词关键字,请说明思路并编程实现方法 String extractSummary(String description,String[] keywords) 目标是找出此产品描述中包含N个关键字(每个关键词至少出现一次)的长度最短的子原创 2013-07-09 00:33:36 · 1738 阅读 · 0 评论 -
机器故障问题
机器故障 有很多的机器,每一个机器都有一个ID,每一个机器都有一个备份。如果某一天有一个机器死机了,你能找到她吗? 这个问题的意思也就是有一个ID的列表,其他的ID都出现2次,只有这个死机的ID出现一次。好比很多数中找出只出现一次的数。很简单吧。利用数组保存ID出现次数,遍历一次就找到了。时间复杂度O(n),空间复杂度也是O(n)。 可是如果ID数量多达几亿呢,你不是很拙计吗?哦,可是动态原创 2013-07-10 11:53:12 · 1616 阅读 · 0 评论 -
求数组的连续子数组之和的最大值(一维二维)
求数组的连续子数组之和的最大值 输入一个N个元素的整型数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。 例如输入的数组为-9 -3 -2 2 -1 2 5 -7 1 5,和最大的子数组为2 -1 2 5。因此输出为该子数组的和8。 可是如果都是负数的话,要返回0?还是返回最小的负数?,这个数时原创 2013-07-22 17:34:25 · 5265 阅读 · 0 评论