- 博客(38)
- 收藏
- 关注
二叉树非递归先序遍历
二叉树的先序遍历使用递归很简单,代码如下:void preOrder(TNode* root){if (root != NULL){Visit(root);preOrder(root->left);preOrder(root->right);}}先访问跟节点,然后访问左节点,再访问右节点。如果不用递归,那该怎么做呢?仔细看一下递归程序,就会发现,其实每次都是走树的左分支(le...
2014-06-14 14:04:09
277
1
你必须知道的Java并发编程基础知识
1. 并发1.1. 什么是并发?并发是一种能并行运行多个程序或并行运行一个程序中多个部分的能力。如果程序中一个耗时的任务能以异步或并行的方式运行,那么整个程序的吞吐量和可交互性将大大改善。现代的PC都有多个CPU或一个CPU中有多个核。是否能合理运用多核的能力将成为一个大规模应用程序的关键。1.2. 进程 vs. 线程进程是以...
2014-05-21 22:00:42
265
编程之美-阶乘末尾0的个数
这个题目是编程之美一书中给出的题目。给定一个整数N,那么N的阶乘N!末尾有多少个0? 比如:N=10,N!=3628800,N!的末尾有2个0。1) 递推考虑阶乘的计算很容易溢出,直接计算阶乘肯定不合适。而每次相乘是否会有新的0产生,只和前一个阶乘的最后一位有关。因此只记录前一个阶乘0的个数和最后一位,就可推出后面的。代码如下:01int countZer...
2014-04-15 17:22:11
297
倒水问题-经典面试题
原文:http://www.acmerblog.com/pour-water-problem-5615.html倒水问题这个题目的版本非常之多,有微软版的,腾讯版的,新浪版的等等,最常见的是给你一个容量为5升的杯子和一个容量为3升的杯子,水不限使用,要求精确得到4升水。问题会有两种形式:1) 直接以简答的方式给定方案这个比较简单,即便是不知道什么原理,也可以很快凑出来。假设两个...
2014-04-11 12:19:32
3034
寻找二叉树两个节点的最低公共祖先
给定一棵树,同时给出树中的两个结点(n1和n2),求它们的最低公共祖先。也就是常见的LCA(Lowest Common Ancestor )问题。看下面的图就明白了: 方法一下面是一个简单的复杂度为 O(n) 的算法,解决LCA问题1) 找到从根到n1的路径,并存储在一个向量或数组中。2)找到从根到n2的路径,并存储在一个向量或数组中。3) 遍历这两条路径,直到遇到一个不同的...
2014-04-09 22:56:32
331
扔鸡蛋问题(Egg Dropping Puzzle)
据说这是一道google的面试题. 看似是一个智力题,实际是编程题。两个软硬程度一样但未知的鸡蛋,它们有可能都在一楼就摔碎,也可能从一百层楼摔下来没事。现有座36层的建筑,要你用这两个鸡蛋确定哪一层是鸡蛋可以安全落下的最高位置,可以摔碎两个鸡蛋,要求用最少的测试次数。1如果你从某一层楼扔下鸡蛋,它没有碎,则这个鸡蛋你可以继续用2如果这个鸡蛋摔碎了,则...
2014-04-09 09:58:04
331
Lua银弹之table
来做一个Brain Storm,细数一下你曾经使用过的数据结构: map, hash_map, array, queue, stack, heap...或许还有很多其它的数据结构,相信在开始接触每个数据结构的时候都花了很多的时间去了解它们的特性,因为他们每一种都是足够的复杂。那么作为一个简单至极的语言,Lua是怎么实现这些的呢?答案是Lua中根本没有这些数据结构,汗了吧!更汗的是,Lua其实只一...
2014-04-07 22:48:40
120
聆听大师---Perl发明人及开源软件先锋Larry Perl
学习和使用#Perl#多年,今天终于有幸在北京的Perl Workshop见到了Perl的发明人Larry Wall。Larry对50年代到现今各种编程语言的设计哲学信手捻来,其中有吐槽有爆料,会场里笑声迭起;还娓娓道来开源社区的协作方式:不做dictator,讲究empathy; 在Q&A和demo环节也感受了Larry对于Perl6的期许与passion。 另外,在Q&A环节...
2014-04-07 22:46:08
153
动态规划-01背包问题
在M件物品取出若干件放在空间为W的背包里,每件物品的体积为W1,W2……Wn,与之相对应的价值为P1,P2……Pn。求出获得最大价值的方案。注意:在本题中,所有的体积值均为整数。01的意思是,每个物品都是一个整体,要么整个都要,要么都不要。1)最优子结构考虑所有物品的子集合,考虑第n个物品都有两种情况: 1. 包括在最优方案中 2. 不在最优方案中因此,能获得的最大价值,即为以...
2014-04-06 22:24:36
196
算法分析(2)-递归的时间复杂度
在前面的文章中,我们讨论了循环的时间复杂度分析。很多算法是具有递归性质的,当我们的分析的时候得到的是递推关系的时间复杂度。例如,在归并排序中,对一个给定的数组进行排序,我们把它分成两半,并对这两半递归地重复这个过程。最后,我们合并结果。时间复杂度可以写成:T(n) = 2T(n/2) + cn. 还有许多其他算法,如二分查找,汉诺塔等都可以递推公式。主要有三种方式来递归公式。1...
2014-04-04 12:08:27
767
二分查找-你能完全正确吗?
先给大家贴个题,热乎的,最新的阿里2014实习生笔试题(2014.3.29)。很经典的二分查找,找出其中的bug。题目让指出bug,我想应该是具体的说明错在哪,怎么错了。应该是有两处bug:1) while 循环处条件有错,如果只有一个元素,则返回的肯定的-1,导致答案错误。应改为 end >= start2) 程序会进入死循环。考虑 start =1, end=...
2014-04-01 10:33:54
210
常见的概率相关面试题
在笔记题中概率相关的数学题,也有部分编程题,出现的还是挺多的。概率在生活中的应用较多,同时也可以综合考查面试者的思维能力、应变能力、数学能力。在这里整理了一些概率相关的笔试题和大家分享,此文不涉及编程题,都是一些和生活相关且很有趣的概率题。所有的分析都和背景颜色设置一样了,大家先思考,然后选中就可以看到分析了。题目1假设你参加了一个游戏节目,现在要从三个密封的箱子中选择一个。其中两个箱子...
2014-03-30 22:14:44
705
快慢指针在链表中的应用
快慢指针也是面试中的一个常考知识点,主要是链表的问题中应用较多。1. 判断链表是否存在环设置两个指针(fast, slow),初始值都指向头,slow每次前进一步,fast每次前进二步,如果链表存在环,则fast必定先进入环,而slow后进入环,两个指针必定相遇。(当然,fast先行头到尾部为NULL,则为无环链表)程序如下:01int isExitsLoop(L...
2014-03-27 23:00:26
179
我不懂技术,所以阿里技术是BAT中最强的
这周二,马云在北大的演讲 我不懂技术,所以阿里技术是BAT中最强的 人们一直认为阿里巴巴的技术可能是中国互联网中最差的,百度李彦宏懂技术、马化腾学技术,只有马云什么都不学,好像认为马云很差。 其实正因为我不懂技术,我们公司技术才最好。不懂技术,在于我们对技术的尊重,我们没法吵架。如果我很懂技术,我们公司的技术人很就会悲摧,我三天两头会告诉他们应该这样应该那样,因为我不懂,...
2014-03-23 22:18:53
1487
使用python写糗事百科的爬虫
最近看了一些利用python来写一些网站的爬虫以自动下载和排版的文章,于是自己动手也写一个,网络上很多的版本都无法正常运行,因为糗事百科现在不能直接使用url去使用爬虫了,必须要伪装成浏览器来下载。所以必须要加工一下现有的版本才行。 经过一下午的查看资料和手动测试,终于实现了,截图为证: 下面是直接在python GUI/IDLE里运行的结果 可以直接运行的代码,...
2014-03-16 21:00:12
113
哪些行业巨头正在使用Linux
Linux无处不在。有哪些大公司正在使用Linux操作系统呢?亚马逊亚马逊是大多数人喜欢买书的地方。大型在线零售商Amazon.com的几乎每个业务都由Linux支持。自从转向Linux后,亚马逊节省的技术基础设施成本高达数百万美元。当时亚马逊在向证券管理委员会提交的报表中称,亚马逊的省钱之道关键在于“利用便宜的基础技术架构,引入基于Linux的技术平台,又由于市场的供过于求使...
2014-03-15 23:07:25
443
与其让代码在Github上发霉,不如到Binpress出售
开源项目显然成为现在程序员们的最大能力认证和炫耀资本之一。据说现在愤怒的程序员们约架都会去Github上开个分支写代码?不过,如果做开源项目这件事,除了能让你长脸,也许还能带来不错的收入呢。Binpress就是做这样的平台。你可以把它看成商业版本的Github,或者开源项目的Amazon:各种各样的开源项目在这上面交易,比如“Piano Keyboard for iOS”,或者“Radi...
2014-03-15 10:32:08
306
质因数分解及算法实现
每个合数都可以写成几个质数相乘的形式,这几个质数就都叫做这个合数的质因数。如果一个质数是某个数的因数,那么就说这个质数是这个数的质因数。而这个因数一定是一个质数。定义质因数(或质因子)在数论里是指能整除给定正整数的质数。两个没有共同质因子的正整数称为互质。因为1没有质因子,1与任何正整数(包括1本身)都是互质。正整数的因数分解可将正整数表示为一连串的质因子相乘,质因子如重复可以指数表示...
2014-03-14 20:00:54
3765
寻找马航失联航班线索,你也可以
马航失联航班事件牵动国人,不只是因为机上大部分乘客来自中国。这神秘失踪,目前难以找到确切证据的事件,勾起的还有人们对未知和不可掌控时间的深深恐惧。处理恐惧和悲伤,有人选择宣泄,也有人选择将不安和关注转化成点滴的行动力——例如这次 Tomnod 平台上众包寻找失联飞机线索的项目。 这个众包项目背后的支持公司是美国科罗拉多州的微型成像技术企业 DigitalGlobe,他们在微博中证...
2014-03-12 20:56:32
221
微软:与 360 合作共同“呵护” XP 用户
微软中国昨晚宣布,“与奇虎 360 一起合作为国内 Windows XP 用户持续提供过渡期间的安全防护服务,以及便捷的 Windows 8 升级方案。”与此同时,微软中国再次强调了 XP 的相关事宜:Windows XP 将于 2014 年 4 月 8 日退休,用户的 Windows XP 机器在 4 月 8 号之后仍可使用。Windows XP 系统服役长达 13 年,已经不能...
2014-03-12 18:43:39
158
动态规划(1)-重叠子问题的性质
动态规划(DP)通过分解成子问题解决了给定复杂的问题,并存储子问题的结果,以避免再次计算相同的结果。我们通过下面这个问题来说明这两个重要属性:1)重叠子问题2)最优子结构1)重叠子问题:像分而治之,动态规划也把问题分解为子问题。动态规划主要用于:当相同的子问题的解决方案被重复利用。在动态规划中,子问题解决方案被存储在一个表中,以便这些不必重新计算。因此,如果这个问题是没有共同的(重叠...
2014-03-10 10:53:07
2828
各种编程语言们都能干什么
Kevin Kelleher提出了一种比较编程语言的优劣的有趣的方式:用解决了何种问题来描述该语言。居然有这么多的优秀的编程语言能被这么描述。Algol: 汇编形式太底层Pascal: Algol没有足够的数据类型去实现各种算法Modula: Pascal对于系统级编程功能不够强大Simula: Algol不适合仿真应用Smalltalk: Simula不是完全的面对对象编程...
2014-03-07 19:42:19
1182
如何创建你自己的Git服务器?
尽管我是一个快乐的(同时也是付费的)GitHub用户,但是我多次想要在我自己的服务器上搭建私人仓库(github会提供给付费用户私人仓库—-译注)。如果你连不上公共网络,或者你受够了呆板的管理,亦或是你只是单纯的想要不同与Github(以及其他类似的网站)所提供的服务,那么搭建你自己的Git服务器将会很有帮助。在Unix(Linux、Mac OSX、 *BSD、 Solaris、AIX)的机器上...
2014-03-06 10:15:53
220
独立开发者所承受的巨大压力
当我开始于 1994 年编写游戏,并在 1995 年将其当成全职工作后,我便很快得出了一个结论,即关于那些将我所做的事当成谋生方法的人:“这些人都疯了。” 之后,随着年龄的增长,我便逐渐意识到自己也疯了。 随着年龄的增长,我悟出了一个真理:其实每个人都疯了。每个人都有自己的破坏性。没有人能够或者逃出这个世界。 这只是关于独立开发者将拥有更高的曝光度,更大的压力,以及较小的支持...
2014-03-04 19:30:08
159
答完这些题 你就可以去Google报到了
How many golf balls can fit in a school bus?一个校车里能放下多少个高尔夫球? How much should you charge to wash all the windows in Seattle?要擦洗全西雅图的所有玻璃,需要支付多少钱? How many piano tuners are there in the...
2014-03-03 16:42:21
147
8个超实用的jQuery技巧攻略
本文我们将为jQuery用户分享8个超实用的技巧攻略。jQuery是JavaScript最好的库之一,主要用于制作动画、事件处理,支持Ajax及HTML 脚本客户端。此外,jQuery还拥有各种插件,以帮助开发者在最短时间内快速创建网站/网页。文中分享的这些实用代码,希望你会喜欢。1)禁用右键单击功能 如果你想为用户节省网站信息,那么开发者可以使用这段代码——禁用右键单击功能。...
2014-03-03 15:33:40
105
成为一个PHP专家:缺失的环节
这一篇文章是“Becoming a PHP Professional”系列 4 篇博文中的第 1 篇。当浏览各类与PHP相关的博客时,比如Quora上的问题,谷歌群组,简讯和杂志,我经常注意到技能的等级分化。问题都类似于“我如何连接到MySQL数据库?”或者“我该如何扩展邮件系统才能在每小时发送超过一万封邮件,而不需要引入新的服务器?”我将PHP能力水平分为4个等级(可能适用于任何编程语...
2014-03-02 13:28:42
145
最长上升子序列长度(LIS)-O(nlogn)算法
此前在动态规划一讲:动态规划(3)-最长递增子序列 曾说过此问题,当前是的双重循环是O(n^2)的复杂度。后来在网上看到说LIS问题有O(nlogn)的算法,于是拿来小研究了一下。这个算法其实已经不是DP了,有点像贪心。至于复杂度降低其实是因为这个算法里面用到了二分搜索。本来有N个数要处理是O(n),每次计算要查找N次还是O(n),一共就是O(n^2);现在搜索换成了O(log...
2014-03-02 13:10:30
323
P2P 僵尸网络入门
【导读】:据Fortinet研究,业界排名前五的僵尸程序分别是:ZeroAccess、Jeefo、Smoke、Mariposa和Grum(Tedroo)。其中,Grum网络在2011年7月被打掉了,Mariposa的主C&C服务器在几年前也被拿下。2012年12月下旬,微软联合欧美执法部门断掉了ZeroAccess。当人们正大肆宣传ZeroAccess被攻克的消息,MalwareTe...
2014-03-01 10:23:00
1838
2014找工作总结-机会往往留给有准备的人
其实我的求职过程在十一之前就已经结束了,总体讲比较顺利。参加面试的几家公司基本都拿到了offer,分别是阿里巴巴、美团网、创新工场涂鸦移动以及华为。当时也参加了其他公司的面试,比如人人,一面过后收到了二面通知,拒了。创新工场豌豆荚一面结束后等消息。十一过后的公司基本都是酱油而过。去哪儿面试拒了。腾讯一面后收到了二面的通知,也拒了。主要是因为自己已经拿到了理想公司的offer。看来人还是需要一点压...
2014-02-28 16:54:24
245
Android实例练习-可爱的小闹钟
摘要:这一篇主要使用系统为我们提供的一个服务AlarmManager来制作一个Android小闹钟,同时还涉及到了自定义主题、判断第一次启动应用、自定义动画、对话框、制作指导滑动页面等方面。最后形成一个可以直接在手机上面使用的小闹钟。开始启动界面AppStart.javapackage com.example.alarmtest; import android.app....
2014-02-26 20:28:18
180
高性能非阻塞Web 服务器Undertow
概述WildFly 8 包含了一个全新的Web服务器(Undertow),WildFly 8 默认的Web服务器为Undertow。一句话概括什么是Undertow - 高性能非阻塞 Web 服务器。Undertow 主要有以下几个特点: 轻量化 - Undertow 是一个Web 服务器,但它不像传统的Web 服务器有容器的概念,它由两个核心jar包组成,使用API加载一个Web...
2014-02-26 10:10:00
408
2014年值得学习的编程语言
经过数据分析和研究Jobs Tractor的45000个开发人员招聘职位数据,我们得到了上图的结果: 自上一年,主要的变化如下: PHP和Java换了位置,但是仍旧是高居不下Java的Android已经取代了SQL并且接近Objective-CJavascript已经超过了RubyPython提高了2位ActionScript下降了2位工业分析RedMonk采用了...
2014-02-25 17:56:25
174
Android之旅-Intent与Intent Filter[上]
Intent代表了Android应用的启动“意图”,Android应用将会根据Intent来启动指定组件,至于到底启动哪个组件,取决于Intent的各个属性。一、显式的Intent明确指定了要启动的组件的Intent我们称为显式的Intent例如:package com.example.testintent;import android.app.Activity;im...
2014-02-25 11:03:30
76
Android系统源代码你下载了吗?
有的朋友可能就会问怎么才能下载到Google官方的源代码呢?下面我们通过Git管理工具来对Android系统源代码进行下载。另外为了方便有的朋友下载,我将下载好的各个版本的源码存放到360云盘,云盘下载链接如下: http://yunpan.cn/QDEkq3uFrbvrI (访问密码:968e) 首先下载Git版本管理工具:下载地址:http://code.google.com/p/msysg...
2014-02-24 19:53:48
102
原创 6门主流编程语言(C、C++、Java、Python、JavaScript、PHP)特性对比
这些年来我陆陆续续已经学习了六种编程语言,有些人会说语言学到最后不都差不多吗?其实可以这样讲,也可以不这样讲。虽然每种语言的表达能力大部分是重合的,只是语法表现形式不一样,但是由于历史发展的原因,每种语言形成了自己的支撑环境,所以都有其主要的适用范围。 C、C++、Python和Java四种是通用编程语言,JavaScript和PHP算是Web环境的专用编程语言。C语言由于其底...
2014-02-24 19:22:19
356
阿里云主机性能评测之硬盘
屌丝一个,租了个息壤便宜的VPS主机。总感觉正在用的息壤VPS主机性能不好,网络时常性的会出现卡顿。申请了一台阿里云主机,单核1G内存,10G数据盘,2M带宽的配置,先测试下硬盘性能。硬盘测试 我们用dd命令附带不同的参数进行测试。1)命令:dd bs=64k count=4k if=/dev/zero of=test下面是息壤VPS的:# dd bs=64k ...
2014-02-24 10:46:41
154
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人