- 博客(27)
- 收藏
- 关注
原创 旋转数组的最大小元素
题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个排好序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3, 4, 5, 1, 2}为{1, 2, 3, 4, 5}的一个旋转,该数组的最小值为1。 解题思路分析:这道题最直观的解法并不难。从头到尾遍历数组一次,就能找出最小的元素,时间复杂度显然是O(N)。但这个思路没有利用输入数组的特性,我
2009-12-09 16:09:00
760
原创 和为n连续正数序列
题目:题目:输入一个正数n,输出所有和为n连续正数序列。例如输入15,由于1+2+3+4+5=4+5+6=7+8=15,所以输出3个连续序列1-5、4-6和7-8。 解题思路:我们用两个数small和big分别表示序列的最小值和最大值。首先把small初始化为1,big初始化为2。如果从small到big的序列的和大于n的话,我们向右移动small,相当于从序列中去掉较小的数字。
2009-12-09 15:09:00
982
原创 最近一些笔试面试题
1.平时洗牌是两打牌,交叉洗在一起.也就是开始 1 2 3 4 5 6 7 8第一次 1 5 2 6 3 7 4 8第二次 1 3 5 7 2 4 6 8。。。第k次 ...给你一个数组a[2N],要求在O(1)的空间复杂度内给a[2N]k次洗牌. 2.给定一个整型数n,求出跟n最接近的2的m次方,求出m的值。 3.给定一个数组(无序),例如Index
2009-12-04 08:14:00
557
原创 判断两个数组是否完全一样(未完成)
题目:数组AB都分别存放着N个不重复的整数, 乱序怎么判断AB里的数是否完全一样??时间复杂度要优于O(NlogN)空间复杂度在O(1)需要考虑溢出问题。
2009-11-21 23:25:00
724
原创 快速找到两个有序数组第(m+n)/2个元素
题目:两个数组,分别按从小到大排列第一个数组,m个元素第二个数组,n个元素如何快速找到第(m+n)/2个元素?能否在O(lg(m+n))的时间复杂度内完成? 解题思路:如果A[m/2] 如果 > ,在A的前半段和B的后半段继续2分查找如果 =,返回
2009-11-21 23:23:00
669
原创 在排序数组中查找和为给定值的两个数字
题目:输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。要求时间复杂度是O(n)。如果有多对数字的和等于输入的数字,输出任意一对即可。例如输入数组1、2、4、7、11、15和数字15。由于4+11=15,因此输出4和11。解题思路:最初我们找到数组的第一个数字和最后一个数字。当两个数字的和大于输入的数字时,把较大的数字往前移动;当两个
2009-11-20 14:12:00
1038
原创 判断整数序列是不是二元查找树的后序遍历结果
题目:输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果。如果是返回true,否则返回false。 例如输入5、7、6、9、11、10、8,由于这一整数序列是如下树的后序遍历结果: 8 / / 6 10 / / / / 5 7 9 11因此返回true。如果输入7、4、6、5,没有哪棵树的后序遍历
2009-11-20 10:54:00
452
原创 在二元树中找出和为某一值的所有路径-递归算法
题目:输入一个整数和一棵二元树。从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。打印出和与输入整数相等的所有路径。例如输入整数22和如下二元树 10 / /
2009-11-20 10:03:00
638
原创 找出数组中两个只出现一次的数字--分组异或
题目:一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。解题思路:这个题目的突破口在哪里?题目为什么要强调有一个数字出现一次,其他的出现两次?我们想到了异或运算的性质:任何一个数字异或它自己都等于0。也就是说,如果我们从头到尾依次异或数组中的每一个数字,那么最终的结果刚好是那个只出现依次的数
2009-11-19 15:49:00
1910
原创 在字符串中删除特定的字符
题目:输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。例如,输入”They are students.”和”aeiou”,则删除之后的第一个字符串变成”Thy r stdnts.”。解题思路:(1)我们并不需要在每次删除一个字符的时候都去移动后面所有的字符。我们可以设想,当一个字符需要被删除的时候,我们把它所占的位置让它后面的字符来填补,也就相当于这个字符被删除了
2009-11-19 15:20:00
863
原创 第一个只出现一次的字符-hash解法
题目:在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。解题思路:由于题目与字符出现的次数相关,我们是不是可以统计每个字符在该字符串中出现的次数?要达到这个目的,我们需要一个数据容器来存放每个字符的出现次数。在这个数据容器中可以根据字符来查找它出现的次数,也就是说这个容器的作用是把一个字符映射成一个数字。在常用的数据容器中,哈希表正是这个用途。哈希
2009-11-19 14:48:00
681
原创 寻找丑数
2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。题目:我们把只包含因子 习惯上我们把1当做是第一个丑数。解题思路: (1)根据丑数的定义,丑数应该是另一个丑数乘以2、3或者5的结果(1除外)。因此我们可以创建一个数组,里面的数字是排好序的丑数。里面的每一个丑数是前面的丑数乘以2、3或者5得到的。(2)这
2009-11-19 14:20:00
624
原创 两字符序列的最长公共字符子序列
求两字符序列的最长公共字符子序列 问题描述:字符序列的子序列是指从给定字符序列中随意地(不一定连续)去掉若干个字符(可能一个也不去掉)后所形成的字符序列。令给定的字符序列X=“x0,x1,…,xm-1”,序列Y=“y0,y1,…,yk-1”是X的子序列,存在X的一个严格递增下标序列,使得对所有的j=0,1,…,k-1,有xij=yj。例如,X=“ABCBDAB”,Y=“BCDB”是
2009-11-13 15:58:00
1506
原创 数组中最长递增子序列-java
求数组中最长递增子序列写一个时间复杂度尽可能低的程序,求一个一维数组(N个元素)中的最长递增子序列的长度。例如:在序列1,-1,2,-3,4,-5,6,-7中,其最长的递增子序列为1,2,4,6。 分析与解法 根据题目的要求,求一维数组中的最长递增子序列,也就是找一个标号的序列b[0],b[1],…,b[m](0 解法一
2009-11-13 15:38:00
8833
原创 二叉排序树的建立-java
class Tree { Tree left, right; int item; public Tree(Tree left, Tree right, int item) { this.left = left; this.right = right; this.item = item; }}public class BinSearchTree
2009-11-13 15:28:00
1781
原创 比一个整数大的最小的质数-java
/***比一个整数大的最小的质数***/ public static int getMiniPrim(int n) { n++; int half=(int)Math.sqrt(n); int i = 2; for(;i { if(n%i==0) return getMiniPrim(n++); } return n; }
2009-11-13 15:26:00
680
原创 字符串反转-java
/**将一个字符串反转:Hello world --> world Hello**/ //对一个char数组进行整体反转 public static void subReverse(char[] str, Integer begin, Integer end) { char temp; while (begin temp = str[begin];
2009-11-13 15:22:00
534
原创 打印螺旋举矩阵-java
package algorithms;public class RingDemo { /** * @param args * 打印螺旋举矩阵 */ public static void setArray(int n) { int intA = 1;//初始化 int[][] array = new int[n][n]; int int
2009-11-13 15:17:00
762
原创 求两个有序数组相同元素的个数-JAVA
/** * @param args *求两个有序数组相同元素的个数 */ public static int commonLength(int[] a,int[] b) { int lenA=a.length; int lenB=b.length; int i=0,j=0; int count=0; while(i { if(a[i]==b
2009-11-13 15:15:00
1502
原创 编辑距离算法-java
public class LDistance { // **************************** // Get minimum of three values // **************************** private int Minimum(int a, int b, int c) { int mi; mi = a; if
2009-11-13 15:09:00
1166
原创 第一题:排列组合问题
问题:/* * 排列组合问题 * (1)求一个集合所有子集的问题 * (3)求一个集合的全排列 * (2)求从一个含有n个元素的集合中取m个元素的组合 * * /public class PermutationCombination { /** * @param args */ private int total = 0; private Array
2009-11-02 10:10:00
475
转载 解析Java对象的equals()和hashCode()的使用
转载自:http://blog.youkuaiyun.com/RichardSundusky/archive/2007/02/12/1508028.aspx 解析Java对象的equals()和hashCode()的使用 <!-- document.body.oncopy = function() { i
2009-10-31 17:11:00
990
原创 第一题:约瑟夫环问题
问题: 已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列; 他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。 解题代码如下:public class YueSeHu { private int n; private int m; private int[] man
2009-10-31 10:40:00
670
原创 java内部类总结
定义在一个类内部的类叫内部类,包含内部类的类称为外部类。内部类可以声明public、protected、private等访问限制,可以声明为abstract的供其他内部类或外部类继承与扩展,或者声明为static、final的,也可以实现特定的接口。static的内部类行为上象一个独立的类,非static在行为上类似类的属性或方法且禁止声明static的方法。
2009-10-31 10:19:00
457
转载 SQL语句效率问题的几点总结
转载自:http://blog.youkuaiyun.com/yaowenbin528/archive/2009/10/26/4728713.aspxSQL语句效率问题的几点总结 收藏 此文于2009-10-29被推荐到优快云首页如何被推荐?1. SQL优化的原则是: 将一次操作需要读取的BLOCK数减到最低,即在最短的时间达到最大的数据吞吐量。
2009-10-31 09:54:00
333
转载 Java异常的分类
转载自:http://blog.youkuaiyun.com/ilibaba/archive/2009/03/07/3965359.aspx 被架构师问的面试题1. 异常机制 异常机制是指当程序出现错误后,程序如何处理。具体来说,异常机制提供了程序退出的安全通道。当出现错误后,程序执行的流程发生改变,程序的控制权转移到异常处理器。 传统的处理异常的办法是,函数返回一个特殊的结果来表
2009-10-31 09:49:00
352
转载 转载:八大排序算法总结
转自: http://blog.youkuaiyun.com/yexinghai/archive/2009/10/10/4649923.aspx插入排序1.直接插入排序原理:将数组分为无序区和有序区两个区,然后不断将无序区的第一个元素按大小顺序插入到有序区中去,最终将所有无序区元素都移动到有序区完成排序。要点:设立哨兵,作为临时存储和判断数组边界之用。实现:Void InsertSort(Node L[]
2009-10-31 09:37:00
321
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人