JAVA算法面试题
文章平均质量分 60
MarcoPage
干点自己喜欢做的事!
计算机系的同学需要课程设计或者毕业设计的可以 V 我!
展开
-
79、最大不相交区间数量
给定N个闭区间[ai,bi],请你在数轴上选择若干区间,使得选中的区间之间互不相交(包括端点)。接下来N行,每行包含两个整数ai,bi,表示一个区间的两个端点。输出一个整数,表示可选取区间的最大数量。第一行包含整数N,表示区间数。输出可选取区间的最大数量。原创 2024-06-15 15:15:24 · 411 阅读 · 0 评论 -
78、区间选点
给定N个闭区间[ai,bi],请你在数轴上选择尽量少的点,使得每个区间内至少包含一个选出的点。接下来N行,每行包含两个整数ai,bi,表示一个区间的两个端点。输出一个整数,表示所需的点的最小数量。位于区间端点上的点也算作区间内。第一行包含整数N,表示区间数。输出选择的点的最小数量。原创 2024-06-15 15:14:52 · 615 阅读 · 0 评论 -
77、最短编辑距离
现在请你求出,将A变为B至少需要进行多少次操作。第一行包含整数n,表示字符串A的长度。第三行包含整数m,表示字符串B的长度。第二行包含一个长度为n的字符串A。第四行包含一个长度为m的字符串B。输出一个整数,表示最少操作次数。字符串中均只包含大写字母。原创 2024-06-14 09:12:34 · 313 阅读 · 0 评论 -
76、滑雪
现在给定你一个二维矩阵表示滑雪场各区域的高度,请你找出在该滑雪场中能够完成的最长滑雪轨迹,并输出其长度(可经过最大区域数)。在给定矩阵中,最长的滑行轨迹为25-24-23-…当然,一个人能够滑动到某相邻区域的前提是该区域的高度低于自己目前所在区域的高度。矩阵中第 i 行第 j 列的点表示滑雪场的第 i 行第 j 列区域的高度。在给定矩阵中,一条可行的滑行轨迹为24-17-2-1。接下来R行,每行包含C个整数,表示完整的二维矩阵。给定一个R行C列的矩阵,表示一个矩形网格滑雪场。第一行包含两个整数R和C。原创 2024-06-14 09:11:43 · 208 阅读 · 0 评论 -
75、编辑距离
对于每次询问,请你求出给定的n个字符串中有多少个字符串可以在上限操作次数内经过操作变成询问给出的字符串。给定n个长度不超过10的字符串以及m次询问,每次询问给出一个字符串和一个操作次数上限。输出共m行,每行输出一个整数作为结果,表示一次询问中满足条件的字符串个数。每个对字符串进行的单个字符的插入、删除或替换算作一次操作。再接下来m行,每行包含一个字符串和一个整数,表示一次询问。接下来n行,每行包含一个字符串,表示给定的字符串。字符串中只包含小写字母,且长度均不超过10。第一行包含两个整数n和m。原创 2024-06-13 11:40:57 · 648 阅读 · 0 评论 -
74、数字三角形
给定一个如下图所示的数字三角形,从顶部出发,在每一结点可以选择移动至其左下方的结点或移动至其右下方的结点,一直走到底层,要求找出一条路径,使路径上的数字的和最大。接下来n行,每行包含若干整数,其中第 i 行表示数字三角形第 i 层包含的整数。第一行包含整数n,表示数字三角形的层数。−10000≤三角形中的整数≤10000。输出一个整数,表示最大的路径数字和。优化为一维 DP 数组。原创 2024-06-13 11:40:27 · 274 阅读 · 0 评论 -
73、最长公共子序列
给定两个长度分别为N和M的字符串A和B,求既是A的子序列又是B的子序列的字符串长度最长是多少。第二行包含一个长度为N的字符串,表示字符串A。第三行包含一个长度为M的字符串,表示字符串B。输出一个整数,表示最大长度。第一行包含两个整数N和M。字符串均由小写字母构成。原创 2024-06-12 07:26:23 · 325 阅读 · 0 评论 -
71、最长上升子序列II
给定一个长度为N的数列,求数值严格单调递增的子序列的长度最长是多少。第二行包含N个整数,表示完整序列。输出一个整数,表示最大长度。原创 2024-06-11 07:06:10 · 370 阅读 · 0 评论 -
70、最长上升子序列
给定一个长度为N的数列,求数值严格单调递增的子序列的长度最长是多少。第二行包含N个整数,表示完整序列。输出一个整数,表示最大长度。原创 2024-06-10 10:13:07 · 997 阅读 · 0 评论 -
69、没有上司的舞会
在满足这个条件的前提下,主办方希望邀请一部分职员参会,使得所有参会职员的快乐指数总和最大,求这个最大值。现在要召开一场周年庆宴会,不过,没有职员愿意和直接上司一起参会。接下来N-1行,每行输入一对整数L, K,表示K是L的直接上司。他们的关系就像一棵以校长为根的树,父节点就是子节点的直接上司。每个职员有一个快乐指数,用整数 Hi 给出,其中 1≤i≤N。接下来N行,第 i 行表示 i 号职员的快乐指数Hi。Ural大学有N名职员,编号为1~N。输出最大的快乐指数。原创 2024-06-10 10:12:34 · 539 阅读 · 0 评论 -
68、石子合并
例如有4堆石子分别为 1 3 5 2, 我们可以先合并1、2堆,代价为4,得到4 5 2, 又合并 1,2堆,代价为9,得到9 2 ,再合并得到11,总代价为4+9+11=24;每次只能合并相邻的两堆,合并的代价为这两堆石子的质量之和,合并后与这两堆石子相邻的石子将和新堆相邻,合并时由于选择的顺序不同,合并的总代价也不相同。如果第二步是先合并2,3堆,则代价为7,得到4 7,最后一次合并代价为11,总代价为4+7+11=22。设有N堆石子排成一排,其编号为1,2,3,…输出一个整数,表示最小代价。原创 2024-06-09 21:36:36 · 386 阅读 · 0 评论 -
67、分组背包问题
每件物品的体积是 vij,价值是 wij,其中 i 是组号,j 是组内编号。求解将哪些物品装入背包,可使物品总体积不超过背包容量,且总价值最大。第一行有两个整数 N,V,用空格隔开,分别表示物品组数和背包容量。每组物品有若干个,同一组内的物品最多只能选一个。有 N 组物品和一个容量是 V 的背包。输出一个整数,表示最大价值。背包问题,循环的顺序。原创 2024-06-09 21:36:04 · 497 阅读 · 0 评论 -
66、多重背包问题II
即通过二进制转化的方式,将物品数量转化为多种物品数量的组合。比如假设物品有10个,即可转化为。接下来有 N 行,每行三个整数 vi,wi,si,用空格隔开,分别表示第 i 种物品的体积、价值和数量。,这四种无论如何组合,组合成的状态都在10以内,就可以转化为0-1背包问题。求解将哪些物品装入背包,可使物品体积总和不超过背包容量,且价值总和最大。第 i 种物品最多有 si 件,每件体积是 vi,价值是 wi。第一行两个整数,N,V,用空格隔开,分别表示物品种数和背包容积。输出一个整数,表示最大价值。原创 2024-06-08 09:08:04 · 672 阅读 · 0 评论 -
65、多重背包问题I
接下来有 N 行,每行三个整数 vi,wi,si,用空格隔开,分别表示第 i 种物品的体积、价值和数量。求解将哪些物品装入背包,可使物品体积总和不超过背包容量,且价值总和最大。第 i 种物品最多有 si 件,每件体积是 vi,价值是 wi。第一行两个整数,N,V,用空格隔开,分别表示物品种数和背包容积。有 N 种物品和一个容量是 V 的背包。输出一个整数,表示最大价值。原创 2024-06-08 09:07:19 · 175 阅读 · 0 评论 -
64、完全背包问题
和0-1背包的区别在于每种物品有无限个,则划分子集的时候不再是分成两个子集(取和不取第i件物品),而是分成多个子集(不取第i件,第i件取1个,第i件取2个,…接下来有 N 行,每行两个整数 vi,wi,用空格隔开,分别表示第 i 种物品的体积和价值。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。有 N 种物品和一个容量是 V 的背包,每种物品都有无限件可用。第一行两个整数,N,V,用空格隔开,分别表示物品种数和背包容积。将0-1背包中j的循环顺序改成从小到大,就变成了完全背包。原创 2024-06-07 09:00:06 · 321 阅读 · 0 评论 -
64、完全背包问题
和0-1背包的区别在于每种物品有无限个,则划分子集的时候不再是分成两个子集(取和不取第i件物品),而是分成多个子集(不取第i件,第i件取1个,第i件取2个,…接下来有 N 行,每行两个整数 vi,wi,用空格隔开,分别表示第 i 种物品的体积和价值。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。有 N 种物品和一个容量是 V 的背包,每种物品都有无限件可用。第一行两个整数,N,V,用空格隔开,分别表示物品种数和背包容积。将0-1背包中j的循环顺序改成从小到大,就变成了完全背包。原创 2024-06-07 08:59:32 · 824 阅读 · 0 评论 -
63、背包问题
接下来有 N 行,每行两个整数 vi,wi,用空格隔开,分别表示第 i 件物品的体积和价值。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。选择当前的第i件物品(潜在要求第i件物品体积小于等于背包总容量,即。第一行两个整数,N,V,用空格隔开,分别表示物品数量和背包容积。状态转移:找最后一个不同点,也就是选最后一个物品的不同方案。不选择当前的第件物品/第i件物品比背包容量要大。第 i 件物品的体积是 vi,价值是 wi。的情况下,背包中物品的最大价值。输出一个整数,表示最大价值。原创 2024-06-06 09:04:08 · 1260 阅读 · 0 评论 -
62、最大公约数
给定n对正整数ai,bi,请你求出每对数的最大公约数。输出共n行,每行输出一个整数对的最大公约数。接下来n行,每行包含一个整数对ai,bi。原创 2024-06-06 09:03:25 · 305 阅读 · 0 评论 -
61、约数之和
给定n个正整数ai,请你输出这些数的乘积的约数之和,答案对。输出一个整数,表示所给正整数的乘积的约数个数,答案需对。接下来n行,每行包含一个整数ai。原创 2024-06-05 07:04:55 · 750 阅读 · 0 评论 -
60、最大公约数
给定n对正整数ai,bi,请你求出每对数的最大公约数。输出共n行,每行输出一个整数对的最大公约数。接下来n行,每行包含一个整数对ai,bi。原创 2024-06-05 07:04:04 · 585 阅读 · 0 评论 -
59、约数个数
给定n个正整数ai,请你输出这些数的乘积的约数个数,答案对。输出一个整数,表示所给正整数的乘积的约数个数,答案需对。接下来n行,每行包含一个整数ai。原创 2024-06-04 08:19:15 · 788 阅读 · 0 评论 -
58、试除法求约数
给定n个正整数ai,对于每个整数ai,请你按照从小到大的顺序输出它的所有约数。输出共n行,其中第 i 行输出第 i 个整数ai的所有约数。接下来n行,每行包含一个整数ai。原创 2024-06-04 08:18:39 · 500 阅读 · 0 评论 -
57、筛质数
给定一个正整数n,请你求出1~n中质数的个数。共一行,包含一个整数,表示1~n中质数的个数。每个合数只会被最小质数筛掉。共一行,包含整数n。原创 2024-06-03 10:15:34 · 600 阅读 · 0 评论 -
56、分解质因数
对于每个正整数ai,按照从小到大的顺序输出其分解质因数后,每个质因数的底数和指数,每个底数和指数占一行。给定n个正整数ai,将每个数分解质因数,并按照质因数从小到大的顺序输出每个质因数的底数和指数。每个正整数的质因数全部输出完毕后,输出一个空行。接下来n行,每行包含一个正整数ai。原创 2024-06-03 10:14:48 · 462 阅读 · 0 评论 -
55、试除法判定质数
是否为质数,是则输出“Yes”,否则输出“No”。共n行,其中第 i 行输出第 i 个正整数ai。给定n个正整数ai,判定每个数是否是质数。接下来n行,每行包含一个正整数ai。原创 2024-06-02 10:40:11 · 410 阅读 · 0 评论 -
54、二分图的最大匹配
二分图的匹配:给定一个二分图G,在G的一个子图M中,M的边集{E}中的任意两条边都不依附于同一个顶点,则称M是一个匹配。二分图的最大匹配:所有匹配中包含边数最多的一组匹配被称为二分图的最大匹配,其边数即为最大匹配数。接下来m行,每行包含两个整数u和v,表示左半部点集中的点u和右半部点集中的点v之间存在一条边。数据保证任意一条边的两个端点都不可能在同一部分中。给定一个二分图,其中左半部包含n1个点(编号1。输出一个整数,表示二分图的最大匹配数。n2),二分图共包含m条边。请你求出二分图的最大匹配数。原创 2024-06-02 10:39:39 · 551 阅读 · 0 评论 -
53、染色法判定二分图
接下来m行,每行包含两个整数u和v,表示点u和点v之间存在一条边。如果给定图是二分图,则输出“Yes”,否则输出“No”。给定一个n个点m条边的无向图,图中可能存在重边和自环。请你判断这个图是否是二分图。第一行包含两个整数n和m。原创 2024-06-01 08:51:39 · 168 阅读 · 0 评论 -
51、Kruskal算法求最小生成树
由V中的全部n个顶点和E中n-1条边构成的无向连通子图被称为G的一棵生成树,其中边的权值之和最小的生成树被称为无向图G的最小生成树。共一行,若存在最小生成树,则输出一个整数,表示最小生成树的树边权重之和,如果最小生成树不存在则输出impossible。给定一张边带权的无向图G=(V, E),其中V表示图中点的集合,E表示图中边的集合,n=|V|,m=|E|。接下来m行,每行包含三个整数u,v,w,表示点u和点v之间存在一条权值为w的边。给定一个n个点m条边的无向图,图中可能存在重边和自环,边权可能为负数。原创 2024-05-31 06:47:36 · 271 阅读 · 0 评论 -
50、Prim算法求最小生成树
由V中的全部n个顶点和E中n-1条边构成的无向连通子图被称为G的一棵生成树,其中边的权值之和最小的生成树被称为无向图G的最小生成树。共一行,若存在最小生成树,则输出一个整数,表示最小生成树的树边权重之和,如果最小生成树不存在则输出impossible。给定一张边带权的无向图G=(V, E),其中V表示图中点的集合,E表示图中边的集合,n=|V|,m=|E|。接下来m行,每行包含三个整数u,v,w,表示点u和点v之间存在一条权值为w的边。给定一个n个点m条边的无向图,图中可能存在重边和自环,边权可能为负数。原创 2024-05-31 06:46:23 · 421 阅读 · 0 评论 -
52、有边数限制的最短路
请你求出从1号点到n号点的最多经过k条边的最短距离,如果无法从1号点走到n号点,输出impossible。接下来m行,每行包含三个整数x,y,z,表示存在一条从点x到点y的有向边,边长为z。给定一个n个点m条边的有向图,图中可能存在重边和自环, 边权可能为负数。输出一个整数,表示从1号点到n号点的最多经过k条边的最短距离。如果不存在满足条件的路径,则输出“impossible”。任意边长的绝对值不超过10000。第一行包含三个整数n,m,k。, n 表示点数,m 表示边数。Bellman-Ford算法。原创 2024-05-30 05:39:05 · 717 阅读 · 0 评论 -
49、Floyd求最短路
再给定k个询问,每个询问包含两个整数x和y,表示查询从点x到点y的最短距离,如果路径不存在,则输出“impossible”。共k行,每行输出一个整数,表示询问的结果,若询问两点间不存在路径,则输出“impossible”。接下来m行,每行包含三个整数x,y,z,表示存在一条从点x到点y的有向边,边长为z。给定一个n个点m条边的有向图,图中可能存在重边和自环,边权可能为负数。接下来k行,每行包含两个整数x,y,表示询问点x到点y的最短距离。数据保证图中不存在负权回路。第一行包含三个整数n,m,k。原创 2024-05-30 05:37:43 · 490 阅读 · 0 评论 -
48、spfa求最短路
请你求出1号点到n号点的最短距离,如果无法从1号点走到n号点,则输出impossible。接下来m行每行包含三个整数x,y,z,表示存在一条从点x到点y的有向边,边长为z。给定一个n个点m条边的有向图,图中可能存在重边和自环, 边权可能为负数。如果路径不存在,则输出”impossible”。输出一个整数,表示1号点到n号点的最短距离。图中涉及边长绝对值均不超过10000。数据保证不存在负权回路。第一行包含整数n和m。原创 2024-05-21 07:42:10 · 412 阅读 · 0 评论 -
48、spfa求最短路
请你求出1号点到n号点的最短距离,如果无法从1号点走到n号点,则输出impossible。接下来m行每行包含三个整数x,y,z,表示存在一条从点x到点y的有向边,边长为z。给定一个n个点m条边的有向图,图中可能存在重边和自环, 边权可能为负数。如果路径不存在,则输出”impossible”。输出一个整数,表示1号点到n号点的最短距离。图中涉及边长绝对值均不超过10000。数据保证不存在负权回路。第一行包含整数n和m。原创 2024-04-27 08:30:00 · 383 阅读 · 0 评论 -
47、Dijkstra求最短路I
接下来m行每行包含三个整数x,y,z,表示存在一条从点x到点y的有向边,边长为z。请你求出1号点到n号点的最短距离,如果无法从1号点走到n号点,则输出-1。给定一个n个点m条边的有向图,图中可能存在重边和自环,所有边权均为正值。输出一个整数,表示1号点到n号点的最短距离。图中涉及边长均不超过10000。如果路径不存在,则输出-1。第一行包含整数n和m。原创 2024-04-27 08:30:00 · 779 阅读 · 0 评论 -
46、有向图的拓扑序列
若一个由图中所有点构成的序列A满足:对于图中的每条边(x, y),x在A中都出现在y之前,则称A是该图的一个拓扑序列。接下来m行,每行包含两个整数x和y,表示存在一条从点x到点y的有向边(x, y)。给定一个n个点m条边的有向图,点的编号是1到n,图中可能存在重边和自环。请输出任意一个该有向图的拓扑序列,如果拓扑序列不存在,则输出-1。共一行,如果存在拓扑序列,则输出任意一个合法的拓扑序列即可。第一行包含两个整数n和m。有向无环图也叫拓扑图。原创 2024-04-26 06:42:45 · 427 阅读 · 0 评论 -
45、图中点的层次
接下来m行,每行包含两个整数a和b,表示存在一条从a走到b的长度为1的边。请你求出1号点到n号点的最短距离,如果从1号点无法走到n号点,输出-1。给定一个n个点m条边的有向图,图中可能存在重边和自环。输出一个整数,表示1号点到n号点的最短距离。所有边的长度都是1,点的编号为1~n。第一行包含两个整数n和m。原创 2024-04-26 06:41:46 · 448 阅读 · 0 评论 -
44、树的重心
重心定义:重心是指树中的一个结点,如果将这个点删除后,剩余各个连通块中点数的最大值最小,那么这个节点被称为树的重心。接下来n-1行,每行包含两个整数a和b,表示点a和点b之间存在一条边。请你找到树的重心,并输出将重心删除后,剩余各个连通块中点数的最大值。输出一个整数m,表示将重心删除后,剩余各个连通块中点数的最大值。给定一颗树,树中包含n个结点(编号1~n)和n-1条无向边。第一行包含整数n,表示树的结点数。原创 2024-04-25 07:36:01 · 213 阅读 · 0 评论 -
43、八数码
在一个3×3的网格中,1~8这8个数字和一个“x”恰好不重不漏地分布在这3×3的网格中。例如,示例中图形就可以通过让“x”先后与右、下、右三个方向的数字交换成功得到正确排列。在游戏过程中,可以把“x”与其上、下、左、右四个方向之一的数字交换(如果存在)。现在,给你一个初始网格,请你求出得到正确排列至少需要进行多少次交换。输出占一行,包含一个整数,表示最少交换次数。输入占一行,将3×3的初始网格描绘出来。如果不存在解决方案,则输出”-1”。字符串处理差劲,这部分还要优化。原创 2024-04-25 07:35:03 · 336 阅读 · 0 评论 -
42、走迷宫
给定一个n*m的二维整数数组,用来表示一个迷宫,数组中只包含0或1,其中0表示可以走的路,1表示不可通过的墙壁。最初,有一个人位于左上角(1, 1)处,已知该人每次可以向上、下、左、右任意一个方向移动一个位置。数据保证(1, 1)处和(n, m)处的数字为0,且一定至少存在一条通路。请问,该人从左上角移动至右下角(n, m)处,至少需要移动多少次。接下来n行,每行包含m个整数(0或1),表示完整的二维数组迷宫。输出一个整数,表示从左上角移动至右下角的最少移动次数。第一行包含两个整数n和m。原创 2024-04-24 09:34:32 · 363 阅读 · 0 评论 -
41、n-皇后问题
n-皇后问题是指将 n 个皇后放在 n∗n 的国际象棋棋盘上,使得皇后不能相互攻击到,即任意两个皇后都不能处于同一行、同一列或同一斜线上。其中”.”表示某一个位置的方格状态为空,”Q”表示某一个位置的方格上摆着皇后。每个解决方案占n行,每行输出一个长度为n的字符串,用来表示完整的棋盘状态。现在给定整数n,请你输出所有的满足条件的棋子摆法。输出方案的顺序任意,只要不重复且没有遗漏即可。每个方案输出完成后,输出一个空行。共一行,包含整数n。原创 2024-04-24 09:33:56 · 367 阅读 · 0 评论