摘要: // 面试题22:链表中倒数第k个结点 // 题目:输入一个链表,输出该链表中倒数第k个结点。为了符合大多数人的习惯, // 本题从1开始计数,即链表的尾结点是倒数第1个结点。例如一个链表有6个结点, // 从头结点开始它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个结点是 // 值为4的结点。 //O(n)的解法:维护两个指针,让A走B前头,前K步,A到头,B就是解了,但是这个问题... 阅读全文
posted @ 2019-03-06 22:56 深夜十二点三十三 阅读(118) 评论(0) 推荐(0) 编辑
摘要: // 面试题21:调整数组顺序使奇数位于偶数前面 // 题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有 // 奇数位于数组的前半部分,所有偶数位于数组的后半部分。 #include void Reorder(int *pData, unsigned int length, bool(*func)(int)); bool isEven(int n); // ====... 阅读全文
posted @ 2019-03-06 22:36 深夜十二点三十三 阅读(235) 评论(0) 推荐(0) 编辑
摘要: // 面试题20:表示数值的字符串 // 题目:请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如, // 字符串“+100”、“5e2”、“-123”、“3.1416”及“-1E-16”都表示数值,但“12e”、 // “1a3.14”、“1.2.3”、“+-5”及“12e+5.4”都不是 #include bool scanUnsignedInteger(const ch... 阅读全文
posted @ 2019-03-06 22:10 深夜十二点三十三 阅读(201) 评论(0) 推荐(0) 编辑
摘要: // 面试题19:正则表达式匹配 // 题目:请实现一个函数用来匹配包含'.'和'*'的正则表达式。模式中的字符'.' // 表示任意一个字符,而'*'表示它前面的字符可以出现任意次(含0次)。在本题 // 中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a" // 和"ab*ac*a"匹配,但与"aa.a"及"ab*a"均不匹配。 #include using ... 阅读全文
posted @ 2019-03-06 21:14 深夜十二点三十三 阅读(365) 评论(0) 推荐(0) 编辑
摘要: // 面试题18(二):删除链表中重复的结点 // 题目:在一个排序的链表中,如何删除重复的结点?例如,在图3.4(a)中重复 // 结点被删除之后,链表如图3.4(b)所示。 #include #include "List.h" using namespace std; void DeleteDuplication(ListNode** pHead)//注意有可能删除头结点,所以是** ... 阅读全文
posted @ 2019-03-06 20:43 深夜十二点三十三 阅读(255) 评论(0) 推荐(0) 编辑
摘要: // 面试题18(一):在O(1)时间删除链表结点 // 题目:给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该 // 结点。 #include #include "List.h" void DeleteNode(ListNode** pListHead, ListNode* pToBeDeleted) { if (!pListHead || !pToBeDel... 阅读全文
posted @ 2019-03-06 20:03 深夜十二点三十三 阅读(392) 评论(0) 推荐(0) 编辑
摘要: // 面试题17:打印1到最大的n位数 // 题目:输入数字n,按顺序打印出从1最大的n位十进制数。比如输入3,则 // 打印出1、2、3一直到最大的3位数即999。 #include #include using namespace std; void PrintNumber(char* number); bool Increment(char* number); void Print... 阅读全文
posted @ 2019-03-06 19:34 深夜十二点三十三 阅读(409) 评论(0) 推荐(0) 编辑