注意一题多解,举一反三,从普通算法到最优算法
1.判断一个字符串中的字符是否唯一(即没有重复),不能使用额外的数据结构(使用基本的数据结构)
2.反转一个字符串
3.去掉字符串中的重复字符,不能使用额外的缓存空间
4.判断两个字符串是否是变位词(两个单词字符相同,但是位置不同的单词)
5.写一函数,把字符串的空格替换为%20
6.判断字符串是否是另一个字符串的字串
7.从一个未排序的链表去除重复的项,不允许使用临时的缓存
8.从一个单链表中返回倒数第k个元素
9.删除链表中的给定节点
10.找出一个循环链表中环的第一个节点
11.使用两个栈来实现一个队列
12.将一个栈按升序排列,可用辅助栈
13.判断一棵树是否平衡; 求一颗二叉树的深度
14.判断有向图两节点之间是否存在路径(DFS BFS)
15.查找中序排列的二叉查找树的下一个节点(分类讨论)
16.一个二叉树中两个节点的第一个公共共同祖先
17.判断一颗二叉树是否是另一颗二叉树的子树
18.输出二叉树路径上节点值之和等于给定值的所有路径
19.求二叉树的最大距离(即相距最远的两个叶子节点)
20.给定一个整数x,找出两外两个整数,二进制表示中1的个数相同,其中一个是比x大的数中最小的,另一个是比x小的数中最大的
21.两个二进制表示的数,从一个数转换到另一个数需要改变的位数
原文:http://blog.csdn.net/hnuzengchao/article/details/40798953