各大公司编程题
文章平均质量分 55
水的化合物的专栏
这个作者很懒,什么都没留下…
展开
-
地域划分-Java
现在有一块长条形的土地,这个土地我们可以看成是由n块小方格连接而成的(这些小方格我们可以将之编号为1到n)。而我们需要将其划分成两个部分,分别种上不同的作物(即作物A和B),划分必须在某两个小方格之间进行,或者在土地的最左端或最右端,若划分在第i块到第i+1块间进行,则划分后,第1至第i块地种A,剩下的地种B。现在有一些专家对土地进行了检测,他们每个人评估了每块土地适合种的作物。请你找到一个合适的原创 2016-04-20 16:55:26 · 692 阅读 · 0 评论 -
最长递增子序列
思路:找最长递增子序列(即找后一个元素比前一个元素大的这么一个序列(找出比自己小的并且看它在它序列的位置,比它的位置+1),并统计每个元素的递增子序列的长度,最后得出最长递增序列)import java.util.Scanner;public class diz { public static void main(String[] args) { Scanner in = new原创 2016-05-04 14:15:45 · 335 阅读 · 0 评论 -
生成格雷码+微信红包
在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同, 则称这种编码为格雷码(Gray Code),请编写一个函数,使用递归的方法生成N位的格雷码。给定一个整数n,请返回n位的格雷码,顺序为从0开始。测试样例: 1 返回:["0","1"]思路:2位格雷码是:"00","01","11","10"。因此是1位格雷码前面加0,再逆置1位格雷码加0,即是原创 2016-05-05 21:45:12 · 494 阅读 · 0 评论 -
设计一个查询词提示系统
查询词提升是现代搜索引擎中广泛使用的一种技术,当用户输入查询词前缀时,会给出一系列相关的查询词推荐,例如在搜索框内输入"中国",会提升"中国好声音","中国银行", "中国联通"等,尝试设计一个查询词提示系统,回答以下问题:1.给定一个查询词集合,用何种数据结构和算法来构建最基本的提示系统?要求输入中文和拼音都能正常工作2.用户输入的前缀下可能有很多可提示的查询词,如何对这些查询词原创 2016-05-06 10:27:21 · 1241 阅读 · 0 评论 -
分页存储管理方式
某操作系统采用分页存储管理方式,下图给出了进程A和进程B的页表结构。如果物理页的大小为512字节,那么进程A与进程B的物理内存总共使用了____字节。进程A页表: 进程B页表:逻辑页 物理页 逻辑页 物理页0 9原创 2016-05-06 10:37:04 · 2074 阅读 · 0 评论 -
跳格子问题
有1,2,3,......无穷个格子,你从1号格子出发,每次1/2概率向前跳一格,1/2概率向前跳两格,走到格子编号为4的倍数时结束,结束时期望走的步数为____。212/514/516/518/54这个问题,很显然考察的是递归问题:定义step(i,j)为第i号格子带第j号格子的期望值;step(1,4)为从第一格跳到第四格的期原创 2016-05-06 10:41:37 · 1687 阅读 · 0 评论 -
串珠子-Java
现在A和B在玩一个游戏,这个游戏首先给了他们很多珠子,珠子有两种颜色,一种蓝色,一种黄色,我们假定两种珠子都有无限多。A需要选择n颗珠子(n为奇数),然后由B串成一串项链(顺序由B确定,这里的项链也就是一个环)。假如在最后串成的项链中,A能够找到两个不同位置的蓝色珠子,并在这两处把这个项链断开成两段,其中一段恰好长度为(n+1)/2那么A就胜利了,注意这里为整数截断除法且这个长度是不包括选出的两颗原创 2016-04-25 09:40:32 · 902 阅读 · 0 评论 -
树上最长单色路径
对于一棵由黑白点组成的二叉树,我们需要找到其中最长的单色简单路径,其中简单路径的定义是从树上的某点开始沿树边走不重复的点到树上的另一点结束而形成的路径,而路径的长度就是经过的点的数量(包括起点和终点)。而这里我们所说的单色路径自然就是只经过一种颜色的点的路径。你需要找到这棵树上最长的单色路径。给定一棵二叉树的根节点(树的点数小于等于300,请做到O(n)的复杂度),请返回最长单色路径的长度原创 2016-04-25 09:54:10 · 476 阅读 · 0 评论 -
年终奖-动态规划法
小东所在公司要发年终奖,而小东恰好获得了最高福利,他要在公司年会上参与一个抽奖游戏,游戏在一个6*6的棋盘上进行,上面放着36个价值不等的礼物,每个小的棋盘上面放置着一个礼物,他需要从左上角开始游戏,每次只能向下或者向右移动一步,到达右下角停止,一路上的格子里的礼物小东都能拿到,请设计一个算法使小东拿到价值最高的礼物。给定一个6*6的矩阵board,其中每个元素为对应格子的礼物价值,左上角原创 2016-06-04 14:19:34 · 1585 阅读 · 0 评论 -
奖学金-贪心法
小v今年有n门课,每门都有考试,为了拿到奖学金,小v必须让自己的平均成绩至少为avg。每门课由平时成绩和考试成绩组成,满分为r。现在他知道每门课的平时成绩为ai ,若想让这门课的考试成绩多拿一分的话,小v要花bi 的时间复习,不复习的话当然就是0分。同时我们显然可以发现复习得再多也不会拿到超过满分的分数。为了拿到奖学金,小v至少要花多少时间复习。import java.util原创 2016-06-04 14:40:20 · 1388 阅读 · 0 评论 -
进程调度算法
短作业优先(SJF, Shortest Job First)又称为“短进程优先”SPN(Shortest Process Next);是对FCFS算法的改进,其目标是减少平均周转时间。短作业优先调度算法基于这样一种思想:运行时间短的优先调度;如果运行时间相同则调度最先发起请求的进程。等待时间:一个进程从发起请求到开始执行的时间间隔。现在有n个进程请求cpu,每个进程用一个二元组原创 2016-06-04 14:49:34 · 980 阅读 · 0 评论 -
页面调度算法
在计算机中,页式虚拟存储器实现的一个难点是设计页面调度(置换)算法。其中一种实现方式是FIFO算法。 FIFO算法根据页面进入内存的时间先后选择淘汰页面,先进入内存的页面先淘汰,后进入内存的后淘汰。 假设Cache的大小为2,有5个页面请求,分别为 2 1 2 3 1,则Cache的状态转换为:(2)->(2,1)->(2,1)->(1,3)->(1,3),其中第1,2,4次缺页,总缺原创 2016-06-04 14:58:05 · 1404 阅读 · 0 评论 -
小东分苹果
果园里有一堆苹果,一共n头(n大于1小于9)熊来分,第一头为小东,它把苹果均分n份后,多出了一个,它扔掉了这一个,拿走了自己的一份苹果,接着第二头熊重复这一过程,即先均分n份,扔掉一个然后拿走一份,以此类推直到最后一头熊都是这样(最后一头熊扔掉后可以拿走0个,也算是n份均分)。 问最初这堆苹果最少有多少个。 给定一个整数n,表示熊的个数,返回最初的苹果数。保证有解。测试样例:原创 2016-06-04 15:00:30 · 1214 阅读 · 0 评论 -
上台阶-动态规划
有一楼梯共m级,刚开始时你在第一级,若每次只能跨上一级或者二级,要走上m级,共有多少走法?注:规定从一级到一级有0种走法。给定一个正整数int n,请返回一个数,代表上楼的方式数。保证n小于等于100。为了防止溢出,请返回结果Mod 1000000007的值。测试样例:3返回:2动态规划,从第三级开始,它的结果有第二级和第一级的结果相加得到,推广到一般,则任原创 2016-06-04 16:33:15 · 3622 阅读 · 0 评论 -
最长递增子序列B
import java.util.Scanner;import java.util.Stack;public class Main { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Scanner in = new Scan原创 2016-05-04 14:23:55 · 281 阅读 · 0 评论 -
输入法查找—JAVA
import java.util.LinkedHashMap;import java.util.Scanner;import java.util.Map.Entry;public class Main { /** * @param args */ public static void main(String[] args) { // TODO原创 2016-04-07 16:27:13 · 619 阅读 · 0 评论 -
回文串
给定一个字符串,问是否能通过添加一个字母将其变为回文串。输入描述:一行一个由小写字母构成的字符串,字符串长度小于等于10。输出描述:输出答案(YES\NO)输入例子:coco输出例子:import java.util.Scanner;import java.lang.*; public class Main { public static void mai原创 2016-04-26 20:12:45 · 862 阅读 · 0 评论 -
字符串变形-Java
注意:该题需要注意空格,例如输入:“ h i”,4 输出:“I H ” 对于一个给定的字符串,我们需要在线性(也就是O(n))的时间里对它做一些变形。首先这个字符串中包含着一些空格,就像"Hello World"一样,然后我们要做的是把着个字符串中由空格隔开的单词反序,同时反转每个字符的大小写。比如"Hello World"变形后就变成了"wORLD hELLO"。输入描述:原创 2016-04-20 14:42:09 · 1072 阅读 · 0 评论 -
修理桌子-Java
Arthur最近搬到了新的别墅,别墅特别大,原先的桌子显得比较小,所以他决定换一张新的桌子。他买了一张特别大的桌子,桌子是由很多条桌腿进行支撑的,可是回到家之后他发现桌子不稳,原来是桌子腿长度不太相同。他想要自己把桌子修理好,所以他决定移除掉一些桌腿来让桌子变得平稳。桌子腿总共有n条腿,第i条腿长度为li,Arthur移除第i桌腿要花费代价为di。假设k条腿桌子平稳的条件:超过一半桌腿能够达到桌腿原创 2016-04-26 14:33:39 · 1366 阅读 · 0 评论 -
小易的升级之路-java
小易经常沉迷于网络游戏.有一次,他在玩一个打怪升级的游戏,他的角色的初始能力值为 a.在接下来的一段时间内,他将会依次遇见n个怪物,每个怪物的防御力为b1,b2,b3...bn. 如果遇到的怪物防御力bi小于等于小易的当前能力值c,那么他就能轻松打败怪物,并 且使得自己的能力值增加bi;如果bi大于c,那他也能打败怪物,但他的能力值只能增加bi 与c的最大公约数.那么问题来了,在一系列的锻炼后原创 2016-04-26 21:05:35 · 701 阅读 · 2 评论 -
扫描透镜-java
在N*M的草地上,提莫种了K个蘑菇,蘑菇爆炸的威力极大,兰博不想贸然去闯,而且蘑菇是隐形的.只 有一种叫做扫描透镜的物品可以扫描出隐形的蘑菇,于是他回了一趟战争学院,买了2个扫描透镜,一个 扫描透镜可以扫描出(3*3)方格中所有的蘑菇,然后兰博就可以清理掉一些隐形的蘑菇. 问:兰博最多可以清理多少个蘑菇?输入描述:第一行三个整数:N,M,K,(1接下来K行,每行两个整数x,y(原创 2016-04-27 09:30:28 · 542 阅读 · 0 评论 -
马戏团-Java
搜狐员工小王最近利用假期在外地旅游,在某个小镇碰到一个马戏团表演,精彩的表演结束后发现团长正和大伙在帐篷前激烈讨论,小王打听了下了解到, 马戏团正打算出一个新节目“最高罗汉塔”,即马戏团员叠罗汉表演。考虑到安全因素,要求叠罗汉过程中,站在某个人肩上的人应该既比自己矮又比自己瘦,或相等。 团长想要本次节目中的罗汉塔叠的最高,由于人数众多,正在头疼如何安排人员的问题。小王觉得这个问题很简单,于是统原创 2016-04-27 15:09:40 · 1088 阅读 · 0 评论 -
发奖金-java
首先该题思路是,首先根据提示,这是一组数据,用固定大小的数组存储他们的成绩,因为他们的成绩是有顺序,有相邻关系,所以可以用二维数 组,分别存储序号和成绩,对于计算总的奖金,可以先创建一个奖金数组存储每个小组的奖金,先初始化为 1W ,然后对该二维数组从前往后遍历:看相邻队伍的成绩:当 i 对应的分数比 i-1 的分数小时, i应该拿到更多的奖金,所以有a[i][2] = a原创 2016-04-27 17:01:32 · 1312 阅读 · 0 评论 -
找出数组中第K个最小的数(快速排序)
问题描述:给定一个无序的数组,从一个数组中找出第K个最小的数,例如,对于给定数组序列{1,5,2,6,8,0,6},其中第4小的数为5。public class Main { /** * @param args */ public static int quickSort(int array[],int low,int high,int k){ in原创 2016-04-07 17:00:45 · 4351 阅读 · 4 评论 -
二叉树
有一棵二叉树,树上每个点标有权值,权值各不相同,请设计一个算法算出权值最大的叶节点到权值最小的叶节点的距离。二叉树每条边的距离为1,一个节点经过多少条边到达另一个节点为这两个节点之间的距离。给定二叉树的根节点root,请返回所求距离。思路:首先这颗二叉树的性质是左孩子小于根结点,右孩子的权值大于根结点。二叉树先序遍历,找到权值最大和权值最小的点,并用数组记录他们到根结点的路径,然后原创 2016-04-29 09:47:16 · 1169 阅读 · 2 评论 -
搬圆桌-Java
[编程题]搬圆桌 现在有一张半径为r的圆桌,其中心位于(x,y),现在他想把圆桌的中心移到(x1,y1)。每次移动一步,都必须在圆桌边缘固定一个点然后将圆桌绕这个点旋转。问最少需要移动几步。输入描述:一行五个整数r,x,y,x1,y1(1≤r≤100000,-100000≤x,y,x1,y1≤100000)输出描述:输出一个整数,表示答案输入例子:2 0 0 0 4输出例子:1//关键点:在距圆心原创 2016-04-18 13:29:16 · 646 阅读 · 0 评论 -
聊天(蘑菇街)-Java
A和B是好友,他们经常在空闲时间聊天,A的空闲时间为[a1 ,b1 ],[a2 ,b2 ]..[ap ,bp ]。B的空闲时间是[c1 +t,d1 +t]..[cq +t,dq +t],这里t为B的起床时间。这些时间包括了边界点。B的起床时间为[l,r]的一个时刻。若一个起床时间能使两人在任意时刻聊天,那么这个时间就是合适的,问有多少个合适的起床时间?输入描述: 第一行数据四个整数:p,q,l,r原创 2016-04-18 13:22:06 · 653 阅读 · 0 评论 -
进制转换—Java
写出一个程序,接受一个十六进制的数值字符串,输出该数值的十进制字符串。(多组同时输入 )//自带函数转换 import java.util.*;public class Main { public static void main(String[] args) { Scanner sc=new Scanner(System.in); while (sc.h原创 2016-04-13 09:45:24 · 517 阅读 · 0 评论 -
明明的随机数—去重和排序
明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤100),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作。Input Param n 输入随机数的个数原创 2016-04-13 09:39:44 · 1052 阅读 · 0 评论 -
比较重量
小明陪小红去看钻石,他们从一堆钻石中随机抽取两颗并比较她们的重量。这些钻石的重量各不相同。在他们们比较了一段时间后,它们看中了两颗钻石g1和g2。现在请你根据之前比较的信息判断这两颗钻石的哪颗更重。给定两颗钻石的编号g1,g2,编号从1开始,同时给定关系数组vector,其中元素为一些二元组,第一个元素为一次比较中较重的钻石的编号,第二个元素为较轻的钻石的编号。最后给定之前的比较次数n。请原创 2016-04-28 16:04:41 · 1493 阅读 · 3 评论