摘要:
题目描述 输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。 题目分析 这题有两种方法来做。 第一种就是基于partition的方法,详见我的另一篇文章:基于快排思想查找第K大的数或第K小的数。 第二种就是利用一个长度为k的额外 阅读全文
摘要:
题目描述 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。 题目分析 这题也有两种做法: 第一种:基于快排思想中的partition函数来 阅读全文
摘要:
题目描述 输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 输入描述:输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。 题目分析 这题还算可以,关于全排 阅读全文
摘要:
题目描述 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。 题目分析 要生成排序的双向列表,那么只能是中序遍历,因为中序遍历才能从小到大,所以需要递归, 先对左子数调整为双向链表,并用变量pLast指向最后一个节点 再将中间节点和pL 阅读全文