没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
1
程序员编程艺术第一~二十七章集锦与总结
(教你如何编程)
作者:July、编程艺术室。
时间:2011.04.14—2012.04.03。
出处:http://blog.csdn.net/v_JULY_v
声明:版权所有,侵权定究。
本文档制作者:有鱼网 www.youyur.com CEO 吴超 & 花明月暗
前言:
围绕“面试”、“算法”、“编程”三个主题的程序员编程艺术系列(简称 TAOPP 系列)从
今年 4 月写第一篇起,至今快有一年。近 1 年的创作中,写了二十七章,共计 22 篇文章。
这是本人的第 4 大原创作品,不过与之前微软面试 100 题系列,红黑树系列,及十三个经
典算法研究系列相比,编程艺术系列的某些篇文章的作者除了我本人自己,或多或少还得到
了不少朋友的支持,我把这些朋友组织起来,成立了一个工作室,它的名字叫做编程艺术室。
编程艺术系列最初名为程序员面试题狂想曲,即为面试服务,后来随着加入与我一起创
作的人越来越多,我们逐渐意识到,为面试服务不应该成为我们最终或最主要的目的,而应
该注重提高广大初学者的编程能力,以及如何运用编程技巧和高效的算法解决实际应用问
题。这才是计算机科学与编程的本质。于是,我们便把程序员面试题狂想曲系列更名为程序
员编程艺术系列,然后把狂想曲创作组确定为编程艺术室。并提出了我们的宗旨,即如下,
编程艺术室致力于以下三点工作:
1. 针对一个问题,不断寻找更高效的算法,并予以编程实现。
2. 解决实际中会碰到的应用问题。
3. 经典算法的研究与实现。
总体突出一点:编程,如何高效的编程解决实际问题。
刚开始的时候,我们是不敢给自己戴艺术这个高帽子的,因为艺术的提炼是一个非常非
常艰难的过程,且我们全部都是一群庸人。但是我们很想也非常乐意接受这个挑战。所以,
一边带着万分的惶恐,一边认真细心的创作每一章,等到发布后,再对每一章任何一个细节
2
仔细推敲与琢磨,反复思考,反复修正,反复完善,绝不轻易放过任何一个问题,漏洞,和
bug。但即便如此,仍然冒出了很多的问题。幸运的是,有广大的读者朋友们对编程艺术系
列和我们给予热心的指导与优化建议,更重要的是他们还耐心细致的对编程艺术系列提出了
非常多的且异常宝贵的批评指正与修订完善的意见。
没有编程艺术室全部人员的加入创作,编程艺术系列将比现在所呈现在大家面前的还要
糟糕(至少我个人现在是这么认为的),而如果没有众多网友,朋友们的修正与完善,编程
艺术系列将更显不足,从而失去它本身该有的持久动力与明天。所以,非常感谢所有热心的
朋友给予编程艺术系列所有的指导和意见,你们的反馈给了我们的创作很大很大的帮助,同
时,也感谢本社区编辑的推荐。非常感谢。最后,恳请广大读者对编程艺术系列继续监督,
并随时予以批评指正(我们不能残留任何一个 bug)。因为编程艺术系列最后可能要写到第
六十章。谢谢。
ok,以下是已经写了的编程艺术系列的前二十七章,共 21 篇文章,希望你能从中感受到
编程的技巧与乐趣(点击链接,即可跳转到相应页面):
无私分享,造福天下
第一章、左旋转字符串 ....................................................................................................... 4
第二章、字符串是否包含及相关问题扩展 ..................................................................... 34
第三章、寻找最小的 k 个数 ............................................................................................. 63
第三章续、Top K 算法问题的实现 ................................................................................. 107
第三章再续:快速选择 SELECT 算法的深入分析与实现 .............................................. 148
第三章三续、求数组中给定下标区间内的第 K 小(大)元素 ................................... 167
第四章、现场编写类似 strstr/strcpy/strpbrk 的函数 .................................................... 178
第五章、寻找满足条件的两个或多个数 ....................................................................... 195
第六章、亲和数问题--求解 500 万以内的亲和数 ......................................................... 208
第七章、求连续子数组的最大和 ................................................................................... 215
第八章、从头至尾漫谈虚函数 ....................................................................................... 222
第九章、闲话链表追赶问题 ........................................................................................... 237
第十章、如何给 10^7 个数据量的磁盘文件排序 ......................................................... 246
第十一章:最长公共子序列(LCS)问题 ........................................................................... 280
第十二~十五章:中签概率,IP 访问次数,回文等问题(初稿) ............................. 291
第十六~第二十章:全排列,跳台阶,奇偶排序,第一个只出现一次等问题 ......... 305
3
第二十一~二十二章:出现次数超过一半的数字,最短摘要的生成 ......................... 322
第二十三、四章:杨氏矩阵查找,倒排索引关键词 Hash 不重复编码实践 ............. 340
第二十五章:二分查找实现(Jon Bentley:90%程序员无法正确实现) .................. 363
第二十六章:基于给定的文档生成倒排索引的编码与实践 ....................................... 366
第二十七章:不改变正负数之间相对顺序重新排列数组.时间 O(N),空间 O(1) ...... 393
编程艺术室
编程艺术系列已经发布的上二十七章,仍有很多很多的问题与不足,但永久勘误,永久
优化。如果读者朋友对编程艺术系列任何一章有任何问题,和建议,或者发现了以上任何一
章的问题,错误,漏洞,和 bug,欢迎及时反馈给我们,我们将感激不尽。当然,如果有兴
趣,我们也欢迎您加入我们--编程艺术室:
1. 编程能力较强
2. 有一定的业余时间
3. 工作经验越长越好(能力出众的在读研究生或 ACM 人员也可以考虑)
4. 愿意分享平时工作中的项目经验或性能优化建议
5. 热爱算法者优先。
符合以上条件的朋友欢迎加入编程艺术室。有意者,可给我:zhoulei0907@yahoo.cn 投一
篇稿子(稿子主题,内容,形式不限,只要你觉得自己能写出像已有的 27 章那样的文章便
可投稿),审阅之后,邀请加入,以为大家创造更多的价值,更好的服务。谢谢
版权所有,侵权必究。严禁用于任何商业用途,违者定究法律责任。
特别提醒:
本编程艺术系列文档中有任何一处错误,bug,或漏洞,读者朋友一经发现,欢迎随时
来信指导,或 blog 内留言,评论,我将感激不尽。
我的联系方式如下:
邮箱:zhoulei0907@yahoo.cn
微博:http://weibo.com/julyweibo
Blog:http://blog.csdn.net/v_JULY_v。
本结构之法算法之道 blog,若无意外,永久更新,永久勘误。
感谢关注本编程艺术系列的读者朋友们,感谢所有编程艺术室内的朋友,咱们 blog 上
第二十八章再见。
4
第一章、左旋转字符串
作者:July,yansha。
时间:二零一一年四月十四日。
说明:(狂想曲,有三层意思:1、思绪纷飞,行文杂乱无章,想到什么,记下什么。2、简单问题深入
化,复杂问题精细化,不惧汪洋,不惧艰深,洋洋洒洒,纵横千里。3、依托一道面试题展开来,思维放任
不羁,逐步深入,细致入微,反复修正,绝不含糊,以期给读者一个彻彻底底明明白白的交待)原为狂想
曲,现在已改为编程艺术系列。
微博:http://weibo.com/julyweibo。
出处:http://blog.csdn.net/v_JULY_v。
-------------------------------------------
目录
序
前言
第一节、左旋转字符串
第二节、两个指针逐步翻转
第三节、通过递归转换,缩小问题之规模
第四节、stl::rotate 算法的步步深入
第五节、总结
序
一个懒散的午夜,程序员躺在椅子上,静静点上一支烟,瞅着屏幕上那一行一行如行云
流水般的代码,赏心悦目,渐觉困意,便慢慢闭上了俩眼,养神...。
而后,冥冥中房间里似缓缓响起一首钢琴曲,叫不出名字,却铿锵有力且清脆无比,忽
而激荡,忽而平静。激荡处,如波涛翻滚,怒洋咆哮,平静处,如潺潺流水,鸟语花香。
半响,程序员突然睁开双眼,关掉编译器,打开记事本,信笔由缰,急速记录下他那杂
乱无章,和奇特跳跃的思绪,他怕此刻不赶紧记下来,以后,风吹云散.....于是,世间就有
了,程序员面试题狂想曲一乐章的诞生。
此曲终日弹奏,绵绵不绝,终至广为流传,飘进了千万人的耳中,余音不去....
前言
5
本人整理微软等公司面试 100 题系列,包括原题整理,资源上传,帖子维护,答案整理,
勘误,修正与优化工作,包括后续全新整理的 80 道,总计 180 道面试题,已有半年的时间
了。
关于这 180 道面试题的一切详情,请参见:横空出世,席卷 Csdn [评微软等数据结构+
算法面试 180 题]。
一直觉得,这 180 道题中的任何一题都值得自己反复思考,反复研究,不断修正,不断
优化。之前的答案整理由于时间仓促,加之受最开始的认识局限,更兼水平有限,所以,这
180 道面试题的答案,有很多问题都值得进一步商榷与完善。
特此,想针对这 180 道面试题,再写一个系列,叫做:程序员编程艺术系列。如你所见,
我一般确定要写成一个系列的东西,一般都会永久写下去的。
“他似风儿一般奔跑,很多人渐渐的停下来了,而只有他一直在飞,一直在飞....”
ok,本次程序员编程艺术系列以之前本人最初整理的微软面试 100 题中的第 26 题、左
旋转字符串,为开篇,希望就此问题进行彻底而深入的阐述。然以下所有任何代码仅仅只是
全部测试正确了而已,还有很多的优化工作要做。欢迎任何人,不吝赐教。谢谢。
第一节、左旋转字符串
题目描述:
定义字符串的左旋转操作:把字符串前面的若干个字符移动到字符串的尾部。
如把字符串 abcdef 左旋转 2 位得到字符串 cdefab。
请实现字符串左旋转的函数,要求对长度为 n 的字符串操作的时间复杂度为
O(n),空间复杂度为 O(1)。
编程之美上有这样一个类似的问题,咱们先来看一下:
设计一个算法,把一个含有 N 个元素的数组循环右移 K 位,要求时间复杂度为 O(N),
且只允许使用两个附加变量。
分析:
剩余400页未读,继续阅读
资源评论
- 网络猎手2014-07-21非常好用,谢谢。
- hellowuhan2013-08-29很精彩,总结和理解的很透彻 慢慢学习
mr_chenping
- 粉丝: 134
- 资源: 6
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功