
面试
文章平均质量分 53
mydreamongo
这个作者很懒,什么都没留下…
展开
-
字符串移位包含的问题
编程之美3.1给定两个字符串s1和s2,要求判定s2是否能被s1做循环移位得到的字符串所包含例如,给定s1 = AABCD, s2 = CDAA,返回true,给定s1 = ABCD, s2 = ACBD,返回falsepublic static boolean isIn(String par,String son){ boolean flag=false; char[] pa原创 2013-04-25 20:51:43 · 676 阅读 · 0 评论 -
算法题:字符串的全排列
输入一个字符串,打印出该字符串中字符的所有排列。例如输入字符串abc,打印出由字符a、b、c所能排列出来的所有字符串abc、acb、bac、bca、cab、cba。public void permulate(String array){ char[] arrs=array.toCharArray(); permulation(arrs,0); } public void per原创 2013-05-08 14:48:38 · 740 阅读 · 0 评论 -
面试题之寻找丢失的数字
题目来源:http://fayaa.com/tiku/view/2/ 据传说是MS/Google等等IT名企业的面试题:有一组数字,从1到n,中减少了一个数,顺序也被打乱,放在一个n-1的数组里请找出丢失的数字,最好能有程序,最好算法比较快BTW1: 有很多种方法的哦,据说O(n)的方法就不止一种BTW2: 扩展问题,如果丢失了2个数字呢?BTW3: 一转载 2013-05-22 19:08:39 · 1488 阅读 · 1 评论 -
算法题:把数组排成最小的数
输入一个正整数数组,将它们连接起来排成一个数,输出能排出的所有数字中最小的一个。例如输入数组{32, 321},则输出这两个能排成的最小数字32132public class Min { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated metho原创 2013-05-08 20:57:29 · 769 阅读 · 0 评论 -
算法题:连续子数组的最大和
输入一个整型数组,数组里有整数也有负数。数组中一个或连续的多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为on public static int maxSubArr(int[] arr){ int max=arr[0]; int[] sum=new int[arr.length]; sum[0]=arr[0]; for(int i=1;i<arr.len原创 2013-05-08 19:08:41 · 768 阅读 · 0 评论 -
接口和抽象类异同
相同点:1、都不能被实例化,它们都位于继承树的顶端,用于被其他类实现和继承2、都可以包含抽象方法,实现接口或继承抽象类的普通子类都必须实现这些抽象方法不同点:接口抽象类作为系统与外界交互的窗口,体现的是一种规范作为系统中多个子类共同的父类,体现的是一种模版设计只能包含抽象方法可以包含普通原创 2013-05-07 21:26:42 · 635 阅读 · 0 评论 -
如何在1到N个人当中找出明星?
两个条件:1.有1到N共N个人,且提供一个函数reg(i,j)表示如果i认识j,则返回true,如果不认识返回false,注意这里i认识j并不一定代表j认识i,即不具有对称性2.明星被其余的N-1个人认识,但是他不认识N-1个人当中的任何一个。 给定这两个条件,用O(N)的算法找出N个人当中的明星遍历 1~n 这n个人;首先取出 1号 和 2号,原创 2013-05-05 21:57:36 · 1449 阅读 · 0 评论 -
LRU缓存介绍与实现 (Java)
引子:我们平时总会有一个电话本记录所有朋友的电话,但是,如果有朋友经常联系,那些朋友的电话号码不用翻电话本我们也能记住,但是,如果长时间没有联系了,要再次联系那位朋友的时候,我们又不得不求助电话本,但是,通过电话本查找还是很费时间的。但是,我们大脑能够记住的东西是一定的,我们只能记住自己最熟悉的,而长时间不熟悉的自然就忘记了。其实,计算机也用到了同样的一个概念,我们用缓存来存放以前转载 2013-05-03 16:15:12 · 819 阅读 · 0 评论 -
海量数据处理之排序问题
海量数据处理中一类常见的问题就是排序问题,即对海量数据中的数据进行排序,例如,一个文件中有9亿条不重复的9位整数,对这个文件中数字进行排序。针对这个问题,最容易想到的方法是将所有数据导入到内存中,然后使用常规的排序方法,例如插入排序、快速排序、归并排序等各种排序方法对数据进行排序,最后将排序好的数据存入文件。但这些方法却不能在此适用,由于数据量巨大,在32位机器中,一个整数占用4个字节,而转载 2013-05-03 15:14:56 · 1052 阅读 · 0 评论 -
如何从10亿查询词找出出现频率最高的10个?
1. 问题描述在大规模数据处理中,常遇到的一类问题是,在海量数据中找出出现频率最高的前K个数,或者从海量数据中找出最大的前K个数,这类问题通常称为“top K”问题,如:在搜索引擎中,统计搜索最热门的10个查询词;在歌曲库中统计下载率最高的前10首歌等等。2. 当前解决方案针对top k类问题,通常比较好的方案是【分治+trie树/hash+小顶堆】,即先将数据集按照has转载 2013-05-03 14:43:48 · 1479 阅读 · 0 评论 -
排序算法比较
排序方法最好时间平均时间最坏时间辅助存储稳定性备注简单选择排序O(n2)O(n2)O(n2)O(1)不稳定n小时较好直接插入排序O(n)O(n2)O(n2)O(1)转载 2013-05-03 10:25:14 · 700 阅读 · 0 评论 -
三进制补码
姜咏江 Altera杯全国研究生电子设计大赛有一道简单的“将-37表示成三进制补码”的题。有判卷的老师一上来就提出答案的异议,认为1122(3)的结果不对,因为“除去最高符号位”之外,122(3)=1×32+2×31+2×30=17。这反映出我们长期进行的数字电路设计的理论教学存在问题。 要说“将-37表示成三进制补码”的提法有漏洞,那就是没有提出“用几位来表示”,转载 2013-04-28 14:53:47 · 4307 阅读 · 1 评论 -
打印1到最大的n位数
打印1到最大的n位数主要的逻辑在Increase这个函数。从末位开始循环,如果当前位为9,则置0后向前一位循环,一直找到不为9的位置后加1即可。如果循环到了最前一位,则退出。 /** * * @param n * 打印1到最大的n位数 */ public void print1ToN(int n){ int[] num=new int[n]; while(Inc原创 2013-04-27 22:11:52 · 807 阅读 · 0 评论 -
java中==相关的问题
如果进行比较的两个操作数都是数值类型,即使它们的数据类型不相同,只要它们的值相等,也都将返回true。例如97=='a'返回true,5.0==5也返回true。如果两个操作数都是引用类型,那么只有两个引用变量指向同一个对象才会返回true。对于Integer类型而言:如果Integer ina=2;Integer inb=2;则ina==inb的结果为true;如果Integ原创 2013-04-16 11:05:33 · 671 阅读 · 0 评论 -
求1+2+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A?B:C)
public static void main(String[] args) { int sum=add(50); System.out.println(sum);}public static int add(int n){ int num=0; Boolean flag=(n>0)&&((num=n+add(n-1))<0); return num;}用了短路运算符。。java够原创 2013-06-25 21:06:44 · 1561 阅读 · 0 评论