上一页 1 2 3 4 5 6 7 8 9 10 ··· 58 下一页
  2014年4月4日
摘要: 题目:0,1,...,n-1这n个数字排成一个圆圈,从数字0开始每次从这个圆圈里删除第m个数字。求出这个圆圈里剩下的最后一个数字。这就是有名的约瑟夫(Josephuse)环问题。可以用环形链表模拟圆圈的经典解法。分析:用模板库中的std::list来模拟一个环形链表。由于std::list本身不是一个环形结构,因此每当迭代器扫描到链表末尾的时候,要记得把迭代器移到链表的头部,这样就相当于按照顺序在一个圆圈里遍历了。这种思路的代码如下:int LastRemaining(unsigned int n, unsigned int m){ if(n numbers; for(i = 0... 阅读全文
posted @ 2014-04-04 17:17 猿人谷 阅读(524) 评论(0) 推荐(0) 编辑
摘要: 题目:写一个函数,求两个整数之和,要求在函数体内不得使用+、-、×、÷四则运算符号。分析:第一步:不考虑进位对每一位相加。0加0、1加1的结果都是0,0加1,1加0的结果都是1 。注意到,这和异或的结果是一样的。第二步:进位,对0加0,0加1,1加0而言,都不会产生进位,只有1加1时,会向前产生1个进位。此时我们刻意想象成是两个数先做位与运算,然后再向左移动一位。第三步:相加的过程依然是重复前面两步,知道不产生进位为止。如下是一段基于循环实现的参考代码:int Add(int num1, int num2){ int sum, carry; do{ sum = num... 阅读全文
posted @ 2014-04-04 16:47 猿人谷 阅读(379) 评论(0) 推荐(0) 编辑
摘要: 在Linux下查看磁盘空间使用情况,最常使用的就是du和df了。然而两者还是有很大区别的,有时候其输出结果甚至非常悬殊。1. 如何记忆这两个命令du-Disk Usagedf-Disk Free2. df 和du 的工作原理2.1 du的工作原理du命令会对待统计文件逐个调用fstat这个系统调用,获取文件大小。它的数据是基于文件获取的,所以有很大的灵活性,不一定非要针对一个分区,可以跨越多个分区操作。如果针对的目录中文件很多,du速度就会很慢了。2.2 df的工作原理df命令使用的事statfs这个系统调用,直接读取分区的超级块信息获取分区使用情况。它的数据是基于分区元数据的,所以只能针.. 阅读全文
posted @ 2014-04-04 11:05 猿人谷 阅读(56469) 评论(3) 推荐(4) 编辑
摘要: 已知ip地址为10.130.89.95,其子网掩码为255.255.255.224,求其网络号、子网号和主机号。要看子网掩码变长在第几节,255.255.255.224是在第四节借了位 把224转换为2进制,windows的计算器科学型能帮你计算。是11100000,借了三位 借了三位,子网个数为2的三次方等于8 即八个子网 其实书上说得挺复杂,我感觉,计算网络号最简单的方法就是 256(这是个固定的数字)除以8(子网个数),等于32 那么,八个子网号就分别是 10.130.89.0 10.130.89.32 10.130.89.64 10.130.89.96 10.130.89.128 10 阅读全文
posted @ 2014-04-04 09:27 猿人谷 阅读(33473) 评论(1) 推荐(1) 编辑
  2014年4月3日
摘要: 题目:输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对数字的和等于s,输出任意一对即可。例如输入数组1、2、4、7、11、15和数字15。由于4+11=15,因此输出4和11。思路整理一下:最初我们找到数组的第一个数字和最后一个数字。首先定义两个指针,第一个指针指向数组的第一个(也就是最小的)数字,第二个指针指向数组的最后一个(也就是最大的)数字。当两个数字的和大于输入的数字时,把较大的数字往前移动;当两个数字的和小于数字时,把较小的数字往后移动;当相等时,打完收工。这样扫描的顺序是从数组的两端向数组的中间扫描。bool FindNumbersWithS 阅读全文
posted @ 2014-04-03 19:02 猿人谷 阅读(1403) 评论(0) 推荐(0) 编辑
摘要: 题目:统计一个数字在排序数组中出现的次数。例如输入排序数组{1,2,3,3,3,3,4,5}和数字3,由于3在这个数组中出现了4次,因此输出4.找到排序数组中的第一个K:int GetFirstK(int *data, int length, int k, int start, int end){ if(start > end) return -1; int middleIndex = start + ((end - start) >> 1); int middleData = data[middleIndex]; if(middleDat... 阅读全文
posted @ 2014-04-03 10:17 猿人谷 阅读(426) 评论(0) 推荐(0) 编辑
  2014年3月28日
摘要: 题目:数组中有一个数字出现的次数超过了数组长度的一半,找出这个数字。看到这道题,我们马上就会想到,要是这个数组是排序的数组就好了。如果是排序的数组,那么我们只要遍历一次就可以统计出每个数字出现的次数,这样也就能找出符合要求的数字了。题目给出的数组没有说是排好序的,因此我们需要给它排序。排序的时间复杂度是O(nlogn),再加上遍历的时间复杂度O(n),因此总的复杂度是O(nlogn)。接下来我们试着看看能不能想出更快的算法。前面思路的时间主要是花在排序上。我们可以创建一个哈希表来消除排序的时间。哈希表的键值(Key)为数组中的数字,值(Value)为该数字对应的次数。有了这个辅助的哈希表之后, 阅读全文
posted @ 2014-03-28 17:22 猿人谷 阅读(569) 评论(0) 推荐(0) 编辑
  2014年3月18日
摘要: 一.关于推送通知来源:http://blog.csdn.net/enuola/article/details/8627283推送通知,也被叫做远程通知,是在iOS 3.0以后被引入的功能。是当程序没有启动或不在前台运行时,告诉用户有新消息的一种途径,是从外部服务器发送到应用程序上的。一般说来,当要显示消息或 下载数据的时候,通知是由远程服务器(程序的提供者)发送,然后通过苹果的推送通知服务(Apple Push Notification Service,简称apns)推送到设备的程序上。推送的新消息可能是一条信息、一项即将到期的日程或是一份远程服务器上的新数据。在系统上展现的时候,可以显示警告 阅读全文
posted @ 2014-03-18 20:08 猿人谷 阅读(6910) 评论(1) 推荐(1) 编辑
  2014年3月16日
摘要: 来源:http://www.cocoachina.com/applenews/devnews/2013/0918/7022.html古人云“工欲善其事必先利其器”,打造一个强大的开发环境,是立即提升自身战斗力的绝佳途径!以下是搜集的一些有力的XCode插件。1.全能搜索家CodePilot 2.0你要找的是文件?是文件夹?是代码?Never Mind,CMD+SHIFT+X调出CodePilot,输入任何你想到搜的东西吧!想搜 appFinishLaunchingWithOptions?忘记咋拼了?没关系强大的代码搜索能力,appflaun一样也可以找到!超级强大的正则 匹配,匹配任何你所想! 阅读全文
posted @ 2014-03-16 22:14 猿人谷 阅读(2625) 评论(0) 推荐(0) 编辑
摘要: 来源:http://blog.devtang.com/blog/2013/07/28/a-look-inside-blocks/前言这里有关于block的5道测试题,建议你阅读本文之前先做一下测试。先介绍一下什么是闭包。在wikipedia上,闭包的定义)是:In programming languages, a closure is a function or reference to a function together with a referencing environment—a table storing a reference to each of the non-local 阅读全文
posted @ 2014-03-16 22:10 猿人谷 阅读(1234) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 9 10 ··· 58 下一页