03 2014 档案
数组中出现次数超过一半的数字
摘要:题目:数组中有一个数字出现的次数超过了数组长度的一半,找出这个数字。看到这道题,我们马上就会想到,要是这个数组是排序的数组就好了。如果是排序的数组,那么我们只要遍历一次就可以统计出每个数字出现的次数,这样也就能找出符合要求的数字了。题目给出的数组没有说是排好序的,因此我们需要给它排序。排序的时间复杂度是O(nlogn),再加上遍历的时间复杂度O(n),因此总的复杂度是O(nlogn)。接下来我们试着看看能不能想出更快的算法。前面思路的时间主要是花在排序上。我们可以创建一个哈希表来消除排序的时间。哈希表的键值(Key)为数组中的数字,值(Value)为该数字对应的次数。有了这个辅助的哈希表之后, 阅读全文
posted @ 2014-03-28 17:22 猿人谷 阅读(574) 评论(0) 推荐(0) 编辑
iOS推送通知的实现步骤
摘要:一.关于推送通知来源:http://blog.csdn.net/enuola/article/details/8627283推送通知,也被叫做远程通知,是在iOS 3.0以后被引入的功能。是当程序没有启动或不在前台运行时,告诉用户有新消息的一种途径,是从外部服务器发送到应用程序上的。一般说来,当要显示消息或 下载数据的时候,通知是由远程服务器(程序的提供者)发送,然后通过苹果的推送通知服务(Apple Push Notification Service,简称apns)推送到设备的程序上。推送的新消息可能是一条信息、一项即将到期的日程或是一份远程服务器上的新数据。在系统上展现的时候,可以显示警告 阅读全文
posted @ 2014-03-18 20:08 猿人谷 阅读(6916) 评论(1) 推荐(1) 编辑
那些不能错过的Xcode插件
摘要:来源: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 猿人谷 阅读(2632) 评论(0) 推荐(0) 编辑
谈Objective-C Block的实现
摘要:来源: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 猿人谷 阅读(1235) 评论(0) 推荐(0) 编辑
iOS应用开发:什么是ARC
摘要:ARC是什么ARC是iOS 5推出的新功能,全称叫 ARC(Automatic Reference Counting)。简单地说,就是代码中自动加入了retain/release,原先需要手动添加的用来处理内存管理的引用计数的代码可以自动地由编译器完成了。该机能在 iOS 5/ Mac OS X 10.7 开始导入,利用 Xcode4.2 可以使用该机能。简单地理解ARC,就是通过指定的语法,让编译器(LLVM 3.0)在编译代码时,自动生成实例的引用计数管理部分代码。有一点,ARC并不是GC,它只是一种代码静态分析(Static Analyzer)工具。变化点通过一小段代码,我们看看使用AR 阅读全文
posted @ 2014-03-16 20:29 猿人谷 阅读(4528) 评论(0) 推荐(0) 编辑
大数乘法的几种算法分析及比较(2014腾讯南京笔试题)
摘要:来源:http://blog.csdn.net/chhuach2005/article/details/211681791.题目 编写两个任意位数的大数相乘的程序,给出计算结果。2.题目分析 该题相继被ACM、华为、腾讯等选作笔试、面试题,笔者2014年替师兄去腾讯笔试就遇到此题,当然若无准备要写出这种程序,还是要花一定的时间的。故,觉得有必要深入研究一下。搜索了网上的大多数该类程序和算法,发现,大数乘法主要有模拟手工计算的普通大数乘法,分治算法和FFT算法。其中普通大数乘法占据了90%以上,其优点是空间复杂度低,实现简单,时间复杂度为O(N²),分治算法虽然时间复杂度降低为, 但. 阅读全文
posted @ 2014-03-14 09:41 猿人谷 阅读(44956) 评论(2) 推荐(0) 编辑
两个链表的第一个公共结点
摘要:题目:输入两个链表,找出它们的第一个公共结点。链表结点定义如下:struct ListNode{ int m_nKey; ListNode *m_pNext;};解决办法:首先遍历两个链表得到它们的长度,就能知道哪个链表比较长,以及长的链表比短的链表多几个结点。在第二次遍历的时候,在较长的链表上先走若干步,接着再同时在两个链表上遍历,找到的第一个相同的结点就是它们的第一个公共结点。ListNode *FindFirstCommonNode(ListNode *pHead1, ListNode *pHead2){ //得到两个链表的长度 unsigned int nLength1 =... 阅读全文
posted @ 2014-03-10 16:59 猿人谷 阅读(526) 评论(0) 推荐(0) 编辑