本文出处:http://blog.csdn.net/wuzhekai1985/article/details/6847817
2011年7月至今,解题笔记系列已有39篇文章,本文做一个归纳及索引,方便网友阅读参考。其中的题目多出自两个博客,一个是JULY的,另一个是何海涛的。上面有题目,也有解题思路及代码。
JULY的博客 http://blog.csdn.net/v_JULY_v/article/details/6057286
何海涛的博客 http://zhedahht.blog.163.com/
本人看的题目主要是这两个博客的,自己实现了一下,同时收集了一些其他的算法题。贴在博客上算是一个备份,方便以后查阅,同时也供各位网友参考。
鉴于本人水平有限,思路及代码难免会有问题,还请读者见谅,同时也欢迎大家的批评与建议。
主要按数据结构归纳
(1)树。涉及树的题目多用递归解决。文章列表如下:
解题笔记(7)——判断整数序列是不是二元查找树的后序遍历结果
解题笔记(32)——输入一颗二元查找树,将该树转换为它的镜像
(2)字符串。涉及的算法比较多,递归、动态规划等等。文章列表如下:
(1.找两个字符串的最长公共子串;2.在字符串中删除特定元素;3.左旋转字符串,其实也可以左旋数组;
4.在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b;5.在字符串中找出连续最长的数字串)
(3)链表。这类题解法比较巧妙。文章列表如下:
(1.输入一个链表的头结点,反转该链表,并返回反转后链表的头结点;2.输入一个链表的头结点,从尾到头反过来输出每个结点的值;
3.给定链表的头指针和一个结点指针,在O(1)时间删除该结点;4.两个单向链表,找出它们的第一个公共结点)
解题笔记(30)——找含单链表的环入口点(转网上某位高手的解法)
(4)数组。多用动态规划解决,比如子数组的最大和、数对之差的最小值、最长单调递增子序列等。
解题笔记(31)——从数列1,2...n中随意取几个数,使其和等于m
(5)栈和队列。多用递归解决。文章类表如下:
(1.跳台阶问题;2.栈的push、pop序列;3.二元树的深度;4.颠倒栈;5.设计包含min函数的栈)
(6)随机。
(7)数字及游戏。文章列表如下:
(1.整数的二进制表示中1的个数;2.输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数;
3.输入一个正数n,输出所有和为n连续正数序列;4.调整数组顺序使奇数位于偶数前面;5.寻找丑数)
(1.n对括号有多少种匹配方式;2.矩阵链乘;3.一个栈(无穷大)的进栈序列为1,2,3,…,n,有多少个不同的出栈序列;
4.n个节点构成的二叉树,共有多少种情形;5.在圆上选择2n个点,将这些点成对连接起来使得所得到的n条线段不相交的方法数;
6.求一个凸多边形区域划分成三角形区域的方法数;7.有2n个人排成一行进入剧场)
(8)其他。
以上是截止2011年10月7日的解题笔记。