《程序员面试宝典》精华 编程语言部分
正所谓取其精华,去其糟粕。本文谨记录下《程序员面试宝典》一些关键的知识点、易错点,对于一些虽然重要但书中没有解释清楚的地方不做记录。当然这里的糟粕只是指不那么重要,或者比较简单,并不是说书写的不好。希望以后回顾时无需再看此书,只看保留在文中的精华即可。文中有少许bug,亦摘录在此。本文专注编程语言部分,包括第五章到第九章的内容
第五章 语言细节
...
分类:
编程语言 时间:
2014-08-06 01:55:40
阅读次数:
234
题目:复制一个复杂链表,所谓复杂链表指的是每个节点含有两个指针,一个指向单链表的下一个结点,一个指向单链表中的任意某个结点,或者该指针为空。
为了方便起见,我们将待复制的链表称为原型链表,将复制后的新链表称为复制链表,将指向下一个结点的指针定义为next指针,指向其他位置的指针定义为any指针。《剑指offer》上给出了三种解决方法:(1)常规法;(2)空间换时间法;(3)紧随复制法。书上并给出了第三种方法的实现代码。这里我根据书上的提示,给出第二种方法的代码。...
分类:
其他好文 时间:
2014-08-05 22:45:00
阅读次数:
346
上篇文章算法题:复制复杂链表之空间换时间法我们给出了用映射的方法来为新复制的链表中的每个结点设置any指针,本文给出的是《剑指offer》上给出的算法与代码,《剑指offer》上提到该算法的实现三个步骤:
第一步:复制原始链表的任意结点N并创建新结点N',在把N'连接到N的后面;
第二步:设置每个结点的any指针;
第三步:将长链表分成两个链表,一个是原始链表,另外一个就是我们所要求的复制链表。
为了能够更加明显第理解整个求解过程,我们同样给出如下图:...
分类:
其他好文 时间:
2014-08-05 22:43:10
阅读次数:
310
题目:存在一个单链表,头指针为head,实现单链表的反转Node *Reverse(Node *head)。
该算法的求解办法有很多,如:
方法1:先顺序变量单链表,将结点保存到栈中,在从栈中弹出结点,重新建立一个新的单链表;
方法2:用《剑指offer》里面给出的算法,用三个指针来实现;
方法3:采用递归实现,是方法2的递归实现形式。
本文主要给出方法2和方法3,在给出具体的代码之前,先要注意几个问题:
...
分类:
其他好文 时间:
2014-08-04 18:01:57
阅读次数:
200
题目:给出一个单链表,返回倒数第K个结点,最后一个结点为倒数第1个。
《剑指offer》上面给的解法是设置两个指针,这里记为p1、p2,先让p2走(k-1)步,然后p1、p2同时走,当p2走到最后一个结点时,p1所指向的结点就是倒数第k个结点。
我觉得按照这样的逻辑写代码反而更容易出错,因为我们需要把我两件重要的问题:(1).p2先走(k-1)步;(2)循环结束的条件是p2到达最后一个结点,即p2->next==NULL。显然这样不太容易控制,我的想法是:先让p2先走k步,然后p...
分类:
其他好文 时间:
2014-08-04 14:22:17
阅读次数:
232
今天看到剑指offer上的第12题,题目如下:
输入数字n,按顺序打印出从1到最大的n位十位数。比如输入3,则打印出1,2,3,...,999。
当我看到这个题目的时候,第一感觉就是用递归,为什么呢?首先得从我们的一个实际数字出发,比如123,我们对数字加1,实际上分为如下两个步骤:
步骤1:最低位加1;
步骤2:若发生进位,则向更高位传播该进位的影响(这也是递归的所在)。
在完成这个算法题之前,我想插一句“细节决定成败!”,我们写一个程...
分类:
其他好文 时间:
2014-08-04 11:07:57
阅读次数:
256
约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。
方法1:使用stl::list模拟环形链表,参考剑指offer
代码:
#include
#include
using namespace std;
i...
分类:
其他好文 时间:
2014-08-03 20:40:55
阅读次数:
218
与折半查找是同一个模式,不同的是,在这里不在查找某个确定的值,而是查找确定值所在的上下边界。def getBounder(data, k, start, end, low_bound = False): if end > 1 if data[ mid ] > k: end = mid - 1 ...
分类:
其他好文 时间:
2014-08-02 10:01:53
阅读次数:
208
转载请注明出处:http://blog.csdn.net/ns_code/article/details/26092725 剑指offer上的第24题,主要考察递归思想,九度OJ上AC。题目描写叙述:输入一个整数数组,推断该数组是不是某二叉搜索树的后序遍历的结果。假设是则输出Yes,否则输出No。....
分类:
其他好文 时间:
2014-07-29 13:33:08
阅读次数:
228
题目: 输入一个整型数组, 数组里有正数也有负数. 数组中的一个或连续的多个整数组成一个子数组. 求所有子数组的和的最大值. 要求时间复杂度为O(n)#include int maxsum_subarray(int a[], int n){ if( a==NULL || n curmax ) ...
分类:
其他好文 时间:
2014-07-28 15:27:13
阅读次数:
203