![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
编程题目练习
lrr13
.
展开
-
字符串替换
题目请你实现一个简单的字符串替换函数。原串中需要替换的占位符为"%s",请按照参数列表的顺序一一替换占位符。若参数列表的字符数大于占位符个数。则将剩下的参数字符添加到字符串的结尾。给定一个字符串A,同时给定它的长度n及参数字符数组arg,请返回替换后的字符串。保证参数个数大于等于占位符个数。保证原串由大小写英文字母组成,同时长度小于等于500。测试样例:"A%sC%sE",7,['B','...原创 2019-04-25 21:41:58 · 336 阅读 · 0 评论 -
字符串配对
题目对于两个字符串A,B。请设计一个高效算法,找到B在A中第一次出现的起始位置。若B未在A中出现,则返回-1。给定两个字符串A和B,及它们的长度lena和lenb,请返回题目所求的答案。测试样例:"acbc",4,"bc",2返回:2代码import java.util.*;public class StringPattern { public int findAppe...原创 2019-04-25 15:39:40 · 220 阅读 · 0 评论 -
走方格
题目有一个X*Y的网格,一个机器人只能走格点且只能向右或向下走,要从左上角走到右下角。请设计一个算法,计算机器人有多少种走法。注意这次的网格中有些障碍点是不能走的。给定一个int[][] map(C++ 中为vector >),表示网格图,若map[i][j]为1则说明该点不是障碍点,否则则为障碍。另外给定int x,int y,表示网格的大小。请返回机器人从(0,0)走到(x - 1,...原创 2019-05-05 21:06:53 · 869 阅读 · 0 评论 -
血型遗传
题目血型遗传对照表如下:父母血型子女会出现的血型子女不会出现的血型O与OOA,B,ABA与OA,OB,ABA与AA,OA与BA,B,AB,O——A与ABA,B,ABOB与OB,OA,ABB与BB,OA,ABB与ABA,B,ABOAB与OA,BO,ABAB与ABA,B,ABO...原创 2019-04-25 16:54:10 · 574 阅读 · 0 评论 -
回文链表
题目请编写一个函数,检查链表是否为回文。给定一个链表ListNode* pHead,请返回一个bool,代表链表是否为回文。测试样例:{1,2,3,2,1}返回:true{1,2,3,2,3}返回:false解法此题使用快慢指针法 + 栈的数据结构进行解决,快指针以慢指针的双倍速度进行移动,确保快指针遍历结束时,慢指针到达链表的一半,在快指针遍历时,使用慢指针将前半段的数据进...原创 2019-05-14 11:16:38 · 65 阅读 · 0 评论 -
穿点最多的直线
题目在二维平面上,有一些点,请找出经过点数最多的那条线。给定一个点集vectorp和点集的大小n,没有两个点的横坐标相等的情况,请返回一个vector,代表经过点数最多的那条直线的斜率和截距。解法蛮力法。。public class DenseLine { public double[] getLine(Point[] p, int n) { // write co...原创 2019-05-07 11:16:19 · 121 阅读 · 0 评论 -
链式A+B
题目有两个用链表表示的整数,每个结点包含一个数位。这些数位是反向存放的,也就是个位排在链表的首部。编写函数对这两个整数求和,并用链表形式返回结果。给定两个链表ListNode* A,ListNode* B,请返回A+B的结果(ListNode*)。测试样例:{1,2,3},{3,2,1}返回:{4,4,4}解答本题由于是反向存放,所以省了不少事,可以顺序计算,但是要注意进位的问题...原创 2019-05-24 21:45:55 · 138 阅读 · 0 评论 -
二进制插入
题目有两个32位整数n和m,请编写算法将m的二进制数位插入到n的二进制的第j到第i位,其中二进制的位数从低位数到高位且以0开始。给定两个数int n和int m,同时给定int j和int i,意义如题所述,请返回操作后的数,保证n的第j到第i位均为零,且m的二进制位数小于等于i-j+1。测试样例: 1024,19,2,6返回:1100解法1.蛮力法使用arraylist去转换成...原创 2019-05-12 21:46:19 · 141 阅读 · 0 评论 -
链表分割
题目描述编写代码,以给定值x为基准将链表分割成两部分,所有小于x的结点排在大于或等于x的结点之前给定一个链表的头指针 ListNode* pHead,请返回重新排列后的链表的头指针。注意:分割以后保持原来的数据顺序不变。解法普通链表题,用一个链表装比x小的,用一个链表装剩余的,最后连接两个链表,实现代码如下:public class Partition { public List...原创 2019-05-30 20:36:14 · 72 阅读 · 0 评论 -
访问单个节点的删除
题目描述实现一个算法,删除单向链表中间的某个结点,假定你只能访问该结点。给定待删除的节点,请执行删除操作,若该节点为尾节点,返回false,否则返回true解法删除链表可以用 pNode = pNode.next的方法实现代码如下:public class Remove { public boolean removeNode(ListNode pNode) { ...原创 2019-06-06 15:34:34 · 91 阅读 · 0 评论 -
翻转子串
题目描述假定我们都知道非常高效的算法来检查一个单词是否为其他字符串的子串。请将这个算法编写成一个函数,给定两个字符串s1和s2,请编写代码检查s2是否为s1旋转而成,要求只能调用一次检查子串的函数。给定两个字符串s1,s2,请返回bool值代表s2是否由s1旋转而成。字符串中字符为英文字母和空格,区分大小写,字符串长度小于等于1000。测试样例:“Hello world”,"worldh...原创 2019-06-06 16:27:01 · 178 阅读 · 0 评论 -
空格替换
题目请编写一个方法,将字符串中的空格全部替换为“%20”。假定该字符串有足够的空间存放新增的字符,并且知道字符串的真实长度(小于等于1000),同时保证字符串由大小写的英文字母组成。给定一个string iniString 为原始的串,以及串的长度 int len, 返回替换后的string。解法使用字符串替换方法replaceAll或者replace解决,两者区别为:replace方法...原创 2019-06-07 14:30:59 · 166 阅读 · 0 评论 -
翻转字符串
题目描述请实现一个算法,在不使用额外数据结构和储存空间的情况下,翻转一个给定的字符串(可以使用单个过程变量)。给定一个string iniString,请返回一个string,为翻转后的字符串。保证字符串的长度小于等于5000。测试样例:“This is nowcoder”返回:“redocwon si sihT”解法反向输入,第一个字符是最后一个输入,最后一个字符是第一个输入...原创 2019-06-07 14:50:58 · 106 阅读 · 0 评论 -
确定字符互异
题目描述请实现一个算法,确定一个字符串的所有字符是否全都不同。这里我们要求不允许使用额外的存储结构。给定一个string iniString,请返回一个bool值,True代表所有字符全都不同,False代表存在相同的字符。保证字符串中的字符为ASCII字符。字符串的长度小于等于3000。解法蛮力法import java.util.*;public class Different...原创 2019-06-07 15:01:29 · 183 阅读 · 0 评论 -
合唱团
题目有 n 个学生站成一排,每个学生有一个能力值,牛牛想从这 n 个学生中按照顺序选取 k 名学生,要求相邻两个学生的位置编号的差不超过 d,使得这 k 个学生的能力值的乘积最大,你能返回最大的乘积吗?输入描述:每个输入包含 1 个测试用例。每个测试数据的第一行包含一个整数 n (1 <= n <= 50),表示学生的个数,接下来的一行,包含 n 个整数,按顺序表示每个学生的能...原创 2019-06-10 14:19:56 · 146 阅读 · 0 评论 -
加法运算替代
题目请编写一个方法,实现整数的乘法、减法和除法运算(这里的除指整除)。只允许使用加号。给定两个正整数int a,int b,同时给定一个int type代表运算的类型,1为求a * b,0为求a / b,-1为求a - b。请返回计算的结果,保证数据合法且结果一定在int范围内。测试用例:1,2,1返回:2解法减法取反可以解决,乘法可以分解为加法,要考虑的主要是除法,这里用一种类...原创 2019-05-08 13:55:53 · 345 阅读 · 0 评论 -
无缓存交换
题目请编写一个函数,函数内不使用任何临时变量,直接交换两个数的值。给定一个int数组AB,其第零个元素和第一个元素为待交换的值,请返回交换后的数组。代码异或就完事了,或者也可以用加减法import java.util.*;public class Exchange { public int[] exchangeAB(int[] AB) { // write c...原创 2019-04-30 10:02:22 · 113 阅读 · 0 评论 -
井字棋
题目对于一个给定的井字棋棋盘,请设计一个高效算法判断当前玩家是否获胜。给定一个二维数组board,代表当前棋盘,其中元素为1的代表是当前玩家的棋子,为0表示没有棋子,为-1代表是对方玩家的棋子。代码没什么好说的,普通的蛮力法解决,不过可以写一个扩展到n阶棋盘的算法,去判断五子棋import java.util.*;public class Board { public boo...原创 2019-04-30 09:51:58 · 637 阅读 · 0 评论 -
棋子翻转
题目在4x4的棋盘上摆满了黑白棋子,黑白两色的位置和数目随机其中左上角坐标为(1,1),右下角坐标为(4,4),现在依次有一些翻转操作,要对一些给定支点坐标为中心的上下左右四个棋子的颜色进行翻转,请计算出翻转后的棋盘颜色。给定两个数组A和f,分别为初始棋盘和翻转位置。其中翻转位置共有3个。请返回翻转后的棋盘。测试样例:[[0,0,1,1],[1,0,1,0],[0,1,1,0],[0,0,...原创 2019-04-26 21:42:10 · 160 阅读 · 0 评论 -
字符串移动
每天刷一点算法(1)题目代码要点substring方法题目对于一个字符串,和字符串中的某一位置,请设计一个算法,将包括i位置在内的左侧部分移动到右边,将右侧部分移动到左边。给定字符串A和它的长度n以及特定位置p,请返回旋转后的结果。代码import java.util.*;public class StringRotation { public String rotateSt...原创 2019-04-22 22:38:43 · 218 阅读 · 0 评论 -
矩阵”之“字打印
题目对于一个矩阵,请设计一个算法,将元素按“之”字形打印。具体见样例。给定一个整数矩阵mat,以及他的维数nxm,请返回一个数组,其中元素依次为打印的数字。代码import java.util.*;public class Printer { public int[] printMatrix(int[][] mat, int n, int m) { // wri...原创 2019-04-22 22:41:32 · 121 阅读 · 0 评论 -
矩阵顺时针90度翻转
题目有一个NxN整数矩阵,请编写一个算法,将矩阵顺时针旋转90度。给定一个NxN的矩阵,和矩阵的阶数N,请返回旋转后的NxN矩阵,保证N小于等于300。代码import java.util.*;public class Rotate { public int[][] rotateMatrix(int[][] mat, int n) { // write code...原创 2019-04-22 22:47:31 · 590 阅读 · 0 评论 -
约瑟夫问题2
题目约瑟夫问题是一个著名的趣题。这里我们稍稍修改一下规则。有n个人站成一列。并从头到尾给他们编号,第一个人编号为1。然后从头开始报数,第一轮依次报1,2,1,2…然后报到2的人出局。接着第二轮再从上一轮最后一个报数的人开始依次报1,2,3,1,2,3…报到2,3的人出局。以此类推直到剩下以后一个人。现在需要求的即是这个人的编号。给定一个int n,代表游戏的人数。请返回最后一个人的编号测试样...原创 2019-05-01 21:58:19 · 630 阅读 · 0 评论 -
计算一个未排序数组中排序后相邻元素的最大差值
题目请设计一个复杂度为O(n)的算法,计算一个未排序数组中排序后相邻元素的最大差值。给定一个整数数组A和数组的大小n,请返回最大差值。保证数组元素个数大于等于2小于等于500。测试样例:[9,3,1,10],4返回:6代码import java.util.*;public class MaxDivision { public int findMaxDivision(in...原创 2019-04-23 13:47:47 · 1695 阅读 · 0 评论 -
洪水
题目在一个nxm矩阵形状的城市里爆发了洪水,洪水从(0,0)的格子流到这个城市,在这个矩阵中有的格子有一些建筑,洪水只能在没有建筑的格子流动。请返回洪水流到(n - 1,m - 1)的最早时间(洪水只能从一个格子流到其相邻的格子且洪水单位时间能从一个格子流到相邻格子)。给定一个矩阵map表示城市,其中map[i][j]表示坐标为(i,j)的格子,值为1代表该格子有建筑,0代表没有建筑。同时给定...原创 2019-05-02 12:03:41 · 528 阅读 · 0 评论 -
最高分是多少
题目老师想知道从某某同学当中,分数最高的是多少,现在请你编程模拟老师的询问。当然,老师有时候需要更新某位同学的成绩.输入描述:输入包括多组测试数据。每组输入第一行是两个正整数N和M(0 < N <= 30000,0 < M < 5000),分别代表学生的数目和操作的数目。学生ID编号从1编到N。第二行包含N个整数,代表这N个学生的初始成绩,其中第i个数代表ID为...原创 2019-04-27 21:57:54 · 141 阅读 · 0 评论 -
合法括号序列判断
题目对于一个字符串,请设计一个算法,判断其是否为一个合法的括号串。给定一个字符串A和它的长度n,请返回一个bool值代表它是否为一个合法的括号串。测试样例1:"(()())",6返回:true测试样例2:"()a()()",7返回:false测试样例3:"()(()()",7返回:false解答说到括号题,一般联想到使用堆栈去解题,但是java堆栈的使用和队列不太一样,...原创 2019-05-02 21:00:37 · 351 阅读 · 0 评论 -
最大子方阵
题目有一个方阵,其中每个单元(像素)非黑即白(非0即1),请设计一个高效算法,找到四条边颜色相同的最大子方阵。给定一个01方阵mat,同时给定方阵的边长n,请返回最大子方阵的边长。保证方阵边长小于等于100。测试样例:[[1,1,1],[1,0,1],[1,1,1]],3返回:3代码import java.util.*;public class SubMatrix { ...原创 2019-04-29 10:19:10 · 499 阅读 · 0 评论 -
整数对查找
题目请设计一个高效算法,找出数组中两数之和为指定值的所有整数对。给定一个int数组A和数组大小n以及需查找的和sum,请返回和为sum的整数对的个数。保证数组大小小于等于3000。测试样例:[1,2,3,4,5],5,6返回:2代码1.原始暴力解法:复杂度比较高import java.util.*;public class FindPair { public int ...原创 2019-04-29 12:45:02 · 832 阅读 · 0 评论 -
查找数组中未出现的最小正整数
题目题目描述请设计一个高效算法,查找数组中未出现的最小正整数。给定一个整数数组A和数组的大小n,请返回数组中未出现的最小正整数。保证数组大小小于等于500。测试样例:[-1,2,3,4],4返回:1代码import java.util.*;public class ArrayMex { public int findArrayMex(int[] A, int n) {...原创 2019-04-24 16:45:00 · 1799 阅读 · 0 评论 -
词频统计
题目请设计一个高效的方法,找出任意指定单词在一篇文章中的出现频数。给定一个string数组article和数组大小n及一个待统计单词word,请返回该单词在文章中的出现频数。保证文章的词数小于等于1000。代码import java.util.*;public class Frequency { public int getFrequency(String[] article,...原创 2019-04-29 20:31:05 · 139 阅读 · 0 评论 -
无判断max
题目请编写一个方法,找出两个数字中最大的那个。条件是不得使用if-else等比较和判断运算符。给定两个int a和b,请返回较大的一个数。若两数相同则返回任意一个。代码方法1:数组排序import java.util.*;public class Max { public int getMax(int a, int b) { // write code her...原创 2019-04-29 21:01:11 · 106 阅读 · 0 评论 -
数组单调和
题目描述现定义数组单调和为所有元素i的f(i)值之和。这里的f(i)函数定义为元素i左边(不包括其自身)小于等于它的数字之和。请设计一个高效算法,计算数组的单调和。给定一个数组A同时给定数组的大小n,请返回数组的单调和。保证数组大小小于等于500,同时保证单调和不会超过int范围。测试样例:[1,3,5,2,4,6],6返回:27解法1.蛮力法直接搜索求和,复习度O(n^2),...原创 2019-06-11 15:30:30 · 705 阅读 · 0 评论