数据结构
文章平均质量分 62
zz_d
这个作者很懒,什么都没留下…
展开
-
min 为 O(1) 时间复杂度的栈
题目: 设计包含 min 函数的栈. 定义栈的数据结构, 要求添加一个 min 函数, 能够得到栈的最小元素. 要求函数 min, push, pop 时间复杂度都是 O(1). 思路: 为当前 min 值添加一个指向 前一个 min 位置的 地址偏移值 或指针. 实现: --- 添加偏移值#include #include #include #de原创 2011-06-18 08:16:00 · 614 阅读 · 0 评论 -
查找最小的 K 个元素
题目: 输入 n 个整数, 输出其中最小的 K 个. 思路: 建立一个大小为 k 的大顶堆, 如果新的数小于堆顶数, 则替换它, 然后重新调整堆. 最后输出 K 个数时, 按堆排序的思想全部有序排列, 输出 K 个数. 实现代码:#include #include void AdjustHeap(int *heap, int k, int pos);v原创 2011-06-18 21:15:00 · 537 阅读 · 0 评论 -
O(n)时间求满足和的数对
题目: 输入一个已经按升序排序过的数组和一个数字, 在数组中查找两个数, 使得它们的和正好是输入的那个数字.要求: 时间复杂度是O(n). 如果有多对数字的和等于输入的数字, 输出任意一对即可.例如输入数组 1, 2, 4, 7, 11, 15和数字 15, 输出 4 和 11原创 2011-07-21 21:32:33 · 613 阅读 · 1 评论 -
判断整数序列是不是二元查找树的后序遍历结果
题目:输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果。如果是返回true,否则返回false。例如输入5、7、6、9、11、10、8,由于这一整数序列是如下树的后序遍历结果. 8 / \ 6 10 / \ / \ 5 7 9原创 2011-07-18 16:50:23 · 1247 阅读 · 0 评论 -
翻转句子中单词的顺序
题目: 输入一个英文句子, 翻转句子中单词的顺序, 但单词内字符的顺序不变. 句子中单词以空格符隔开. 为简单起见, 标点符号和普通字符一样处理.例子: 输入 " I am a student." 输出"student. a am I"实现代码:#includ原创 2011-07-19 18:11:03 · 381 阅读 · 0 评论 -
求 1+2+...+n
题目: 求 1+2 +... +n 要求不能使用除法, for, while, if, else, switch, case 等关键字以及条件判断语句 (a?b:c).这道题有点意思.我个人的方法: 借助递归, 函数指针.以下是源码:/* *author: de原创 2011-07-20 18:51:37 · 804 阅读 · 0 评论 -
列数不同数组的一种遍历
今天同事碰到个问题, 我因为生疏, 也耗了些时间才搞定. 下面类型的一种数组 list = [ ["a", "b"], ["1"] ["dd", "ee"] ]需要得到的遍历组合结果为 "a1dd", "a1ee", "b1dd", "b1ee" 直接用循环似乎并不方便实现. 以下是递归的一种实现方法. len = num_of_member( list ) fun( li原创 2012-12-19 17:46:42 · 429 阅读 · 0 评论