ACM-2016校招真题
文章平均质量分 60
有一种宿命叫无能为力
即便梦想依旧遥不可及,我依然矢志不渝的前进
原博客链接:http://blog.csdn.net/wuxiushu
展开
-
判断递归执行的次数
链接:https://www.nowcoder.com/test/question/done?tid=6762467&qid=1306#summary来源:牛客网How many times is f() called when calculating f(10)?12345int f(int x) { if原创 2017-02-28 15:11:08 · 6036 阅读 · 0 评论 -
二分查找(二分)
题目描述对于一个有序数组,我们通常采用二分查找的方式来定位某一元素,请编写二分查找的算法,在数组中查找指定元素。给定一个整数数组A及它的大小n,同时给定要查找的元素val,请返回它在数组中的位置(从0开始),若不存在该元素,返回-1。若该元素出现多次,请返回第一次出现的位置。测试样例:[1,3,5,7,9],5,3返回:1题意分析:注意特殊的原创 2017-02-02 22:28:00 · 474 阅读 · 0 评论 -
首个重复字符(字典的基本操作)
题目描述对于一个字符串,请设计一个高效算法,找到第一次重复出现的字符。给定一个字符串(不一定全为字母)A及它的长度n。请返回第一个重复出现的字符。保证字符串中有重复字符,字符串的长度小于等于500。测试样例:"qywyer23tdd",11返回:y题目来源:去哪儿查找第一个出现重复的字符,看下面一个例子:"kdbaaak",原创 2017-02-02 22:45:52 · 600 阅读 · 0 评论 -
求和(DFS)
输入两个整数 n 和 m,从数列1,2,3.......n 中随意取几个数,使其和等于 m ,要求将其中所有的可能组合列出来 输入描述:每个测试输入包含2个整数,n和m输出描述:按每个组合的字典序排列输出,每行输出一种组合输入例子:5 5输出例子:1 42 35import sysdef DFS(x, sum,原创 2017-02-13 22:18:24 · 920 阅读 · 0 评论 -
删除公共字符
输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。例如,输入”They are students.”和”aeiou”,则删除之后的第一个字符串变成”Thy r stdnts.” 输入描述:每个测试输入包含2个字符串输出描述:输出删除后的字符串输入例子:They are students.aeiou输出例子:Thy r原创 2017-02-13 21:26:18 · 591 阅读 · 0 评论 -
n个数里出现次数大于等于n/2的数
输入n个整数,输出出现次数大于等于数组长度一半的数。 输入描述:每个测试输入包含 n个空格分割的n个整数,n不超过100,其中有一个整数出现次数大于等于n/2。输出描述:输出出现次数大于等于n/2的数。输入例子:3 9 3 2 5 6 7 3 2 3 3 3输出例子:3简单题import systry: w原创 2017-02-13 10:24:53 · 1421 阅读 · 0 评论 -
n个数里最小的k个
读入一个字符串str,输出字符串str中的连续最长的数字串 输入描述:每个测试输入包含空格分割的n+1个整数,最后一个整数为k值,n不超过100。输出描述:输出n个整数里最小的k个数。升序输出输入例子:3 9 6 8 -10 7 -11 19 30 12 23 5输出例子:-11 -10 3 6 7简单题i原创 2017-02-13 10:19:05 · 456 阅读 · 0 评论 -
字符串中找出连续最长的数字串
读入一个字符串str,输出字符串str中的连续最长的数字串 输入描述:个测试输入包含1个测试用例,一个字符串str,长度不超过255。输出描述:在一行内输出str中里连续最长的数字串。输入例子:abcd12345ed125ss123456789输出例子:123456789简单题import systry: w原创 2017-02-13 10:12:56 · 3127 阅读 · 0 评论 -
炮台攻击
题目描述兰博教训提莫之后,然后和提莫讨论起约德尔人,谈起约德尔人,自然少不了一个人,那 就是黑默丁格------约德尔人历史上最伟大的科学家. 提莫说,黑默丁格最近在思考一个问题:黑默丁格有三个炮台,炮台能攻击到距离它R的敌人 (两点之间的距离为两点连续的距离,例如(3,0),(0,4)之间的距离是5),如果一个炮台能攻击 到敌人,那么就会对敌人造成1×的伤害.黑默丁格将三个炮台放在N*M原创 2017-02-12 20:05:05 · 755 阅读 · 0 评论 -
寻找Coder(re + sorted)
题目描述请设计一个高效算法,再给定的字符串数组中,找到包含"Coder"的字符串(不区分大小写),并将其作为一个新的数组返回。结果字符串的顺序按照"Coder"出现的次数递减排列,若两个串中"Coder"出现的次数相同,则保持他们在原数组中的位置关系。给定一个字符串数组A和它的大小n,请返回结果数组。保证原数组大小小于等于300,其中每个串的长度小于等于200。同时保证一定存在原创 2017-02-02 23:48:26 · 273 阅读 · 0 评论 -
最长公共子序列(LCS)
题目描述对于两个字符串,请设计一个高效算法,求他们的最长公共子序列的长度,这里的最长公共子序列定义为有两个序列U1,U2,U3...Un和V1,V2,V3...Vn,其中Ui<Ui+1,Vi<Vi+1。且A[Ui] == B[Vi]。给定两个字符串A和B,同时给定两个串的长度n和m,请返回最长公共子序列的长度。保证两串长度均小于等于300。测试样例:"1A2C3原创 2017-02-02 23:57:47 · 441 阅读 · 0 评论 -
最长递增子序列(LIS)
题目描述对于一个数字序列,请设计一个复杂度为O(nlogn)的算法,返回该序列的最长上升子序列的长度,这里的子序列定义为这样一个序列U1,U2...,其中Ui 给定一个数字序列A及序列的长度n,请返回最长上升子序列的长度。测试样例:[2,1,4,3,1,5,6],7返回:4# -*- coding:utf-8 -*-class Ascen原创 2017-02-03 00:10:08 · 255 阅读 · 0 评论 -
二叉树的序列化(DFS)
题目描述二叉树被记录成文件的过程叫做二叉树的序列化。序列化的方法有很多,这里我们采用括号序列的方法将其序列化,所谓括号序列指的是对于一个节点生成一个括号,括号内是其子树的括号序列,其中左儿子(若存在)的括号在前,右儿子(若存在)的括号在后。对于给定的树,请设计高效的算法,将其序列化。给定一个树的根节点指针root,请返回一个字符串,代表其序列化后的括号序列。原创 2017-02-03 22:26:57 · 585 阅读 · 0 评论 -
链表的回文结构(链表操作)
题目描述对于一个链表,请设计一个时间复杂度为O(n),额外空间复杂度为O(1)的算法,判断其是否为回文结构。给定一个链表的头指针A,请返回一个bool值,代表其是否为回文结构。保证链表长度小于等于900。测试样例:1->2->2->1返回:true简单题,判断是否是回文串即可# -*- coding:utf-8 -*-# class ListN原创 2017-02-03 21:54:35 · 365 阅读 · 0 评论 -
折纸问题(规律题)(map的使用)
题目描述请把纸条竖着放在桌⼦上,然后从纸条的下边向上⽅对折,压出折痕后再展 开。此时有1条折痕,突起的⽅向指向纸条的背⾯,这条折痕叫做“下”折痕 ;突起的⽅向指向纸条正⾯的折痕叫做“上”折痕。如果每次都从下边向上⽅ 对折,对折N次。请从上到下计算出所有折痕的⽅向。给定折的次数n,请返回从上到下的折痕的数组,若为下折痕则对应元素为"down",若为上折痕则为"up".测试样例原创 2017-02-03 20:58:22 · 3905 阅读 · 2 评论 -
顺时针打印矩阵(蛇形填空)(两种方式实现)
题目描述对于一个矩阵,请设计一个算法从左上角(mat[0][0])开始,顺时针打印矩阵元素。给定int矩阵mat,以及它的维数nxm,请返回一个数组,数组中的元素为矩阵元素的顺时针输出。测试样例:[[1,2],[3,4]],2,2返回:[1,2,4,3]代码如下:# -*- coding:utf-8 -*-class Printer: d原创 2017-02-03 14:31:50 · 1053 阅读 · 0 评论 -
顺时针旋转矩阵
题目描述有一个NxN整数矩阵,请编写一个算法,将矩阵顺时针旋转90度。给定一个NxN的矩阵,和矩阵的阶数N,请返回旋转后的NxN矩阵,保证N小于等于300。测试样例:[[1,2,3],[4,5,6],[7,8,9]],3返回:[[7,4,1],[8,5,2],[9,6,3]]简单题# -*- coding:utf-8 -*-class Rot原创 2017-02-03 13:57:25 · 800 阅读 · 0 评论 -
之字形打印矩阵
题目描述对于一个矩阵,请设计一个算法,将元素按“之”字形打印。具体见样例。给定一个整数矩阵mat,以及他的维数nxm,请返回一个数组,其中元素依次为打印的数字。测试样例:[[1,2,3],[4,5,6],[7,8,9],[10,11,12]],4,3返回:[1,2,3,6,5,4,7,8,9,12,11,10]简单题# -*- coding:ut原创 2017-02-03 13:50:22 · 650 阅读 · 0 评论 -
字符串的旋转
题目描述对于一个字符串,和字符串中的某一位置,请设计一个算法,将包括i位置在内的左侧部分移动到右边,将右侧部分移动到左边。给定字符串A和它的长度n以及特定位置p,请返回旋转后的结果。测试样例:"ABCDEFGH",8,4返回:"FGHABCDE"简单题# -*- coding:utf-8 -*-class StringRotation:原创 2017-02-03 13:46:55 · 422 阅读 · 0 评论 -
平均年龄(数学计算)
题目描述已知某公司总人数为W,平均年龄为Y岁(每年3月末计算,同时每年3月初入职新人),假设每年离职率为x,x>0&&x从今年3月末开始,请实现一个算法,可以计算出第N年后公司员工的平均年龄。(结果向上取整)。 输入描述:输入W Y x N输出描述:输出第N年后的平均年龄输入例子:5 5 0.2 3输出例子:15题意分析:原创 2017-02-03 13:25:48 · 5108 阅读 · 0 评论 -
用递归函数和栈操作逆序栈(递归)
题目描述一个栈依次压入1,2,3,4,5那么从栈顶到栈底分别为5,4,3,2,1。将这个栈转置后,从栈顶到栈底为1,2,3,4,5,也就是实现了栈中元素的逆序,请设计一个算法实现逆序栈的操作,但是只能用递归函数来实现,而不能用另外的数据结构。给定一个栈Stack以及栈的大小top,请返回逆序后的栈。测试样例:[1,2,3,4,5],5返回:[5,4,3,2,1]原创 2017-02-12 18:57:43 · 433 阅读 · 0 评论 -
相邻最大差值(桶排序)
题目描述请设计一个复杂度为O(n)的算法,计算一个未排序数组中排序后相邻元素的最大差值。给定一个整数数组A和数组的大小n,请返回最大差值。保证数组元素个数大于等于2小于等于500。测试样例:[9,3,1,10],4返回:6简单题# -*- coding:utf-8 -*-class MaxDivision: def findM原创 2017-02-12 17:43:55 · 1910 阅读 · 1 评论 -
抛小球
题目描述小东和三个朋友一起在楼上抛小球,他们站在楼房的不同层,假设小东站的楼层距离地面N米,球从他手里自由落下,每次落地后反跳回上次下落高度的一半,并以此类推知道全部落到地面不跳,求4个小球一共经过了多少米?(数字都为整数)给定四个整数A,B,C,D,请返回所求结果。测试样例:100,90,80,70返回:1020题目来源:京东简原创 2017-02-10 21:15:55 · 409 阅读 · 0 评论 -
年终奖(DP)
题目描述小东所在公司要发年终奖,而小东恰好获得了最高福利,他要在公司年会上参与一个抽奖游戏,游戏在一个6*6的棋盘上进行,上面放着36个价值不等的礼物,每个小的棋盘上面放置着一个礼物,他需要从左上角开始游戏,每次只能向下或者向右移动一步,到达右下角停止,一路上的格子里的礼物小东都能拿到,请设计一个算法使小东拿到价值最高的礼物。给定一个6*6的矩阵board,其中每个元素为对应格原创 2017-02-10 20:59:14 · 384 阅读 · 0 评论 -
字符串替换
题目描述请你实现一个简单的字符串替换函数。原串中需要替换的占位符为"%s",请按照参数列表的顺序一一替换占位符。若参数列表的字符数大于占位符个数。则将剩下的参数字符添加到字符串的结尾。给定一个字符串A,同时给定它的长度n及参数字符数组arg,请返回替换后的字符串。保证参数个数大于等于占位符个数。保证原串由大小写英文字母组成,同时长度小于等于500。测试样例:"A%sC%原创 2017-02-10 20:30:59 · 619 阅读 · 0 评论 -
表达式合法判断
题目描述写一段代码,判断一个包括'{','[','(',')',']','}'的表达式是否合法(注意看样例的合法规则。)给定一个表达式A,请返回一个bool值,代表它是否合法。测试样例:"[a+b*(5-4)]*{x+b+b*(({1+2)}}" (测试数据是错的)返回:true题目来源:去哪儿题意分析:不考虑左右括号是否匹配,也不原创 2017-02-10 20:17:03 · 1996 阅读 · 0 评论 -
小易的升级之路
题目描述小易经常沉迷于网络游戏.有一次,他在玩一个打怪升级的游戏,他的角色的初始能力值为 a.在接下来的一段时间内,他将会依次遇见n个怪物,每个怪物的防御力为b1,b2,b3...bn. 如果遇到的怪物防御力bi小于等于小易的当前能力值c,那么他就能轻松打败怪物,并 且使得自己的能力值增加bi;如果bi大于c,那他也能打败怪物,但他的能力值只能增加bi 与c的最大公约数.那么问题来了,在一原创 2017-02-10 00:45:56 · 284 阅读 · 0 评论 -
发奖金(贪心)
题目描述 狐进行了一次黑客马拉松大赛,全公司一共分为了N个组,每组一个房间排成一排开始比赛,比赛结束后没有公布成绩,但是每个组能够看到自己相邻的两个组里比自己成绩低的组的成绩,比赛结束之后要发奖金,以1w为单位,每个组都至少会发1w的奖金,另外,如果一个组发现自己的奖金没有高于比自己成绩低的组发的奖金,就会不满意,作为比赛的组织方,根据成绩计算出至少需要发多少奖金才能让所有的组满意。原创 2017-02-10 00:19:46 · 934 阅读 · 0 评论 -
矩阵元素相乘
题目描述A[n,m]是一个n行m列的矩阵,a[i,j]表示A的第i行j列的元素,定义x[i,j]为A的第i行和第j列除了a[i,j]之外所有元素(共n+m-2个)的乘积,即x[i,j]=a[i,1]*a[i,2]*...*a[i,j-1]*...*a[i,m]*a[1,j]*a[2,j]...*a[i-1,j]*a[i+1,j]...*a[n,j],现输入非负整形的矩阵A[n,m],求MA原创 2017-02-09 23:53:24 · 1173 阅读 · 0 评论 -
回文串
题目描述给定一个字符串,问是否能通过添加一个字母将其变为回文串。输入描述:一行一个由小写字母构成的字符串,字符串长度小于等于10。输出描述:输出答案(YES\NO).输入例子:coco输出例子:YES题目来源:蘑菇街简单DP,最长会问字符串#!/usr/bin/python#coding: utf-8impo原创 2017-02-03 23:03:13 · 245 阅读 · 0 评论 -
上台阶(DP)
题目描述有一楼梯共m级,刚开始时你在第一级,若每次只能跨上一级或者二级,要走上m级,共有多少走法?注:规定从一级到一级有0种走法。给定一个正整数int n,请返回一个数,代表上楼的方式数。保证n小于等于100。为了防止溢出,请返回结果Mod 1000000007的值。测试样例:3返回:2题目来源:京东class GoUpsta原创 2017-02-11 20:18:29 · 605 阅读 · 0 评论 -
汉诺塔问题I(记录汉诺塔的移动轨迹)
题目描述对于传统的汉诺塔游戏我们做一个拓展,我们有从大到小放置的n个圆盘,开始时所有圆盘都放在左边的柱子上,按照汉诺塔游戏的要求我们要把所有的圆盘都移到右边的柱子上,请实现一个函数打印最优移动轨迹。给定一个int n,表示有n个圆盘。请返回一个string数组,其中的元素依次为每次移动的描述。描述格式为: move from [left/mid/right] to [left/原创 2017-02-20 18:31:12 · 1372 阅读 · 0 评论 -
61-递归和动态规划-汉诺塔II(记录当前序列是最有序列中的第几步)
链接:https://www.nowcoder.com/practice/b2d552cd60b7415fad2612a32e799812?tpId=49&tqId=29342&tPage=4&rp=4&ru=/ta/2016test&qru=/ta/2016test/question-ranking来源:牛客网题目描述有一个int数组arr其中只含有1、2和3,分别代原创 2017-02-20 19:50:38 · 917 阅读 · 0 评论 -
数组Mex
题目描述请设计一个高效算法,查找数组中未出现的最小正整数。给定一个整数数组A和数组的大小n,请返回数组中未出现的最小正整数。保证数组大小小于等于500。测试样例:[-1,2,3,4],4返回:1简单题# -*- coding:utf-8 -*-class ArrayMex: def findArrayMex(self, A,原创 2017-02-12 17:36:01 · 723 阅读 · 0 评论 -
数组单调和
题目描述现定义数组单调和为所有元素i的f(i)值之和。这里的f(i)函数定义为元素i左边(不包括其自身)小于等于它的数字之和。请设计一个高效算法,计算数组的单调和。给定一个数组A同时给定数组的大小n,请返回数组的单调和。保证数组大小小于等于500,同时保证单调和不会超过int范围。测试样例:[1,3,5,2,4,6],6返回:27简单题# -*-原创 2017-02-12 17:32:07 · 628 阅读 · 2 评论 -
无序数组中最小的k个数
题目描述对于一个无序数组,数组中元素为互不相同的整数,请返回其中最小的k个数,顺序与原数组中元素顺序一致。给定一个整数数组A及它的大小n,同时给定k,请返回其中最小的k个数。测试样例:[1,2,4,3],4,2返回:[1,2]简单题# -*- coding:utf-8 -*-class KthNumbers: def findKthN原创 2017-02-12 17:22:29 · 747 阅读 · 0 评论 -
左右最值最大差(贪心)
题目描述给定一个长度为N(N>1)的整型数组A,可以将A划分成左右两个部分,左部分A[0..K],右部分A[K+1..N-1],K可以取值的范围是[0,N-2]。求这么多划分方案中,左部分中的最大值减去右部分最大值的绝对值,最大是多少?给定整数数组A和数组的大小n,请返回题目所求的答案。测试样例:[2,7,3,1,1],5返回:6简单题# -原创 2017-02-12 17:11:31 · 410 阅读 · 0 评论 -
最后一个字符(dict的使用)
题目描述正在挑战一个CrackMe的你,把需要填写的前面几位密码都正确猜出了,可是这最后一位密码,好像藏得有点深。CrackMe的作者还挑衅般的在里面藏了个.tar.gz文件,解压缩出来,里面写道你要的最后一个字符就在下面这个字符串里,这个字符是下面整个字符串中第一个只出现一次的字符。(比如,串是abaccdeff,那么正确字符就是b了) 然而下面给出来的字符串好像太长太长了,单靠人力原创 2017-02-11 23:21:49 · 614 阅读 · 0 评论 -
字符串通配(正则表达式)
题目描述对于字符串A,其中绝对不含有字符’.’和’*’。再给定字符串B,其中可以含有’.’或’*’,’*’字符不能是B的首字符,并且任意两个’*’字符不相邻。exp中的’.’代表任何一个字符,B中的’*’表示’*’的前一个字符可以有0个或者多个。请写一个函数,判断A是否能被B匹配。给定两个字符串A和B,同时给定两个串的长度lena和lenb,请返回一个bool值代表能否匹配。保原创 2017-02-11 22:47:56 · 2799 阅读 · 0 评论 -
纸牌博弈(DP)
题目描述有一个整型数组A,代表数值不同的纸牌排成一条线。玩家a和玩家b依次拿走每张纸牌,规定玩家a先拿,玩家B后拿,但是每个玩家每次只能拿走最左或最右的纸牌,玩家a和玩家b都绝顶聪明,他们总会采用最优策略。请返回最后获胜者的分数。给定纸牌序列A及序列的大小n,请返回最后分数较高者得分数(相同则返回任意一个分数)。保证A中的元素均小于等于1000。且A的大小小于等于300。测原创 2017-02-11 22:38:00 · 732 阅读 · 0 评论