面试题
cjf068
这个作者很懒,什么都没留下…
展开
-
蛇形数组
[code="java"] package org.jf.alg; /** * 蛇形数组 * * n=3 * 1 2 3 * 8 9 4 * 7 6 5 * 最基本的直观爬行方式实现 * @author junfeng.chen * */ public class SnakeArray { private int array[][]...2012-02-10 21:54:28 · 105 阅读 · 0 评论 -
设计包含max函数的栈
[code="java"] package org.jf.alg; /** * * 算法描述: 一个栈stack,具有push和pop操作,其时间复杂度皆为O(1)。 设计算法max操作,求栈中的最大值,该操作的时间复杂度也要求为O(1)。 可以修改栈的存储方式,push,pop的操作,但是要保证O(1)的时间复杂度,空间时间复杂度无要求。 链表存储, 当然数...2012-02-11 11:33:40 · 218 阅读 · 0 评论 -
求最小的k个数问题
查找最小的k个元素 题目:输入n个整数,输出其中最小的k个。 例如输入1,2,3,4,5,6,7和8这8个数字,则最小的4个数字为1,2,3和4。 我的思路:利用二叉堆,构建一个容量为k的定长最小二叉堆,遍历数组,逐个将元素add进堆,完毕返回堆中所有元素即为最小的k个元素 [code="java"] package org.jf.alg; /** * 定长小根堆 ...2012-02-11 14:59:23 · 265 阅读 · 0 评论 -
求最大子数组之和
求最大子数组之和的线性解法:本算法受编程珠玑中提示而得 [code="java"]/** * 线性时间复杂度求最大和子数组 * @param a 源数组 * @return 结果数组 长度为3的数组 分别为元素起始位置 结束位置 总和 */ public static int[] getMaxSumSubArray(int a[]) { int begi...2012-04-06 22:51:50 · 127 阅读 · 0 评论 -
判断数组中是否存在两个元素之和等于给定数值
已知int数组a按升序排列,要求用线性时间复杂的算法,判断是否存在一个数n等于数组中某两个元素之和。 线性算法: 取两个数组下标,一个为起始下标,一个为末尾下标,分别即为low和high (以下代码假设数组尚未排序) [code="java"]/** * 判断是否存在两个元素之和与给定数相等 * @param a * @param n * @return */...2012-04-06 22:58:11 · 1170 阅读 · 0 评论