算法
数据结构与算法
远山初学编程
知不足而奋近,望远山而前行
展开
-
蓝桥杯_数字和 java
问题描述小蓝有一个 30 行 60 列的数字矩阵,矩阵中的每个数都是 0 到 9 之间的数字。处理过的测试用例(数字之间添加了空格)现在小蓝想从这个矩阵的第一行第一列画一条折线到第 3030 行 6060 列,线只能沿水平向右走或竖直向下走,只能在有数字的地方拐弯。小蓝想知道,这样一条线经过的数字的和最大是多少。答案提交本题为一道结果填空的题,只需要算出结果后,在代码中使用输出语句将结果输出即可。运行限制最大运行时间:1s最大运行内存: 256M。原创 2023-03-16 20:39:02 · 70 阅读 · 0 评论 -
力扣_最长不重复子串 java
子串是指原字符串中连续的一段字符,比如 “abc” 是 “abcabcbb” 的子串,而 “acb” 不是。要保证集合中的字符都是当前子串中的字符,如果遇到重复的字符,说明当前子串已经结束,我们要开始寻找下一个子串。一个简单的方法是用一个集合(比如 HashSet)来存储已经遍历过的字符,每次遇到一个新的字符,就判断它是否在集合中,如果在,说明有重复,如果不在,就把它加入集合中。输入: s = “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。原创 2023-03-27 23:01:33 · 127 阅读 · 0 评论 -
力扣_最长连续递增序列 java
力扣题目链接(opens new window)原创 2023-03-17 22:37:21 · 199 阅读 · 0 评论 -
力扣_最长公共子序列 java
力扣题目链接(opens new window)给定两个字符串 text1 和 text2,返回这两个字符串的最长公共子序列的长度。一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。例如,"ace" 是 "abcde" 的子序列,但 "aec" 不是 "abcde" 的子序列。两个字符串的「公共子序列」是这两个字符串所共同拥有的子序列。若这两个字符串没有公共子序列,则返回 0。原创 2023-03-17 21:33:34 · 142 阅读 · 0 评论 -
力扣_最长公共前缀 java
如果在尚未遍历完所有的字符串时,最长公共前缀已经是空串,则最长公共前缀一定是空串,依次遍历字符串数组中的每个字符串,对于每个遍历到的字符串,更新最长公共前缀,输入:strs = ["flower","flow","flight"]输入:strs = ["dog","racecar","car"]基于该结论,可以得到一种查找字符串数组中的最长公共前缀的简单方法。当遍历完所有的字符串以后,即可得到字符串数组中的最长公共前缀。编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。原创 2023-03-17 22:12:45 · 60 阅读 · 0 评论 -
力扣_最长递增子序列 java
给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。示例 1:输入:输出:4解释:最长递增子序列是 [2,3,7,101],因此长度为 4。示例 2:输入:输出:4示例 3:输入:输出:1提示:-1044进阶:你能将算法的时间复杂度降低到 O(n log(n)) 吗?思路。原创 2023-03-17 23:18:13 · 312 阅读 · 0 评论 -
蓝桥杯_最长子序列 java
题目描述我们称一个字符串S包含字符串T是指T是S的一个子序列,即可以从字符串S中抽出若干个字符,它们按原来的顺序组合成一个新的字符串与T完全一样。给定两个字符串S和T,请问T中从第一个字符开始最长连续多少个字符 被S包含?输入描述输入两行,每行一个字符串。第一行的字符串为S,第二行的字符串为T。两个字符串均非空而且只包含大写英文字母。其中,1≤∣T∣≤∣S∣≤1000。输出描述输出一个整数,表示答案。输入输出样例示例输入输出3。原创 2023-03-17 21:47:33 · 267 阅读 · 0 评论 -
蓝桥杯_字母数 java
问题描述请找到一个大于 2022 的最小数,这个数转换成十六进制之后,所有的数位(不含前导 0)都为字母(A到F请将这个数的十进制形式作为答案提交。答案提交这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。运行限制最大运行时间:1s最大运行内存: 256M。原创 2023-03-11 09:45:11 · 300 阅读 · 0 评论 -
蓝桥杯_6个0 java
问题描述请找到一个大于 20222022 的最小数,这个数转换成二进制之后,最低的 66 个二进制位全为 00。请将这个数的十进制形式作为答案提交。答案提交本题为一道结果填空的题,只需要算出结果后,在代码中使用输出语句将结果输出即可。运行限制最大运行时间:1s最大运行内存: 256M。原创 2023-03-11 09:42:12 · 72 阅读 · 0 评论 -
蓝桥杯_补齐回文串 java
问题描述一个字符串如果从左向右读和从右向左读相同,则称为一个回文串,例如是一个回文串。小蓝有一个字符串,请将这个字符串右边加上一些字符,使其成为一个回文串。如果有多种方案,请输出最短的回文串。输入格式输入一行包含一个字符串,由小写英文字母组成。输出格式输出一行包含答案。样例输入 1lanqiao样例输出 1样例输入 2banana样例输出 2bananab样例输入 3noon样例输出 3noon评测用例规模与约定对于所有评测用例,1原创 2023-03-12 10:00:58 · 201 阅读 · 0 评论 -
蓝桥杯_地址转换 java
题目描述Excel 是最常用的办公软件。每个单元格都有唯一的地址表示。比如:第 12 行第 4 列表示为:"D12",第 5 行第 255 列表示为"IU5"。事实上,Excel 提供了两种地址表示方法,还有一种表示法叫做 RC 格式地址。第 12 行第 4 列表示为:"R12C4",第 5 行第 255 列表示为"R5C255"。你的任务是:编写程序,实现从 RC 地址格式到常规地址格式的转换。输入描述用户先输入一个整数nn原创 2023-03-11 12:40:31 · 101 阅读 · 0 评论 -
蓝桥杯_列名 java
问题描述在 Excel 中,列的名称使用英文字母的组合。前 2626 列用一个字母,依次为A到Z,接下来 26×2626×26 列使用两个字母的组合,依次为AA到ZZ。请问第 20222022 列的名称是什么?答案提交这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个由大写字母组成的字符串,在提交答案时只填写这个字符串,填写多余的内容将无法得分。运行限制最大运行时间:1s最大运行内存: 256M。原创 2023-03-12 15:24:39 · 177 阅读 · 2 评论 -
蓝桥杯_错误票据 java
题目描述某涉密单位下发了某种票据,并要在年终全部收回。每张票据有唯一的ID号。全年所有票据的ID号是连续的,但ID的开始数码是随机选定的。因为工作人员疏忽,在录入ID号的时候发生了一处错误,造成了某个ID断号,另外一个ID重号。你的任务是通过编程,找出断号的ID和重号的ID。假设断号不可能发生在最大和最小号。输入描述输入描述要求程序首先输入一个整数 (N原创 2023-03-13 23:22:49 · 335 阅读 · 0 评论 -
蓝桥杯_排列小球 java
题目描述小蓝有黄绿蓝三种颜色的小球,分别为RGB个。同样颜色的小球没有区别。小蓝将这些小球从左到右排成一排,排完后,将最左边的连续同色小球个数记为t1,将接下来的连续小球个数记为t2,以此类推直到最右边的小球。请问,总共有多少总摆放小球的方案,使得t1t2,⋯ 为严格单调递增序列,即t1≤t2≤t3≤⋯。输入描述输入一行包含三个整数RGB。其中,0≤RGB≤50。。输出描述输出一个整数,表示答案。输入输出样例示例 1输入。原创 2023-03-13 09:33:49 · 153 阅读 · 0 评论 -
蓝桥杯_穿越雷区 java
题目描述X 星的坦克战车很奇怪,它必须交替地穿越正能量辐射区和负能量辐射区才能保持正常运转,否则将报废。某坦克需要从 A 区到 B 区去( A,B 区本身是安全区,没有正能量或负能量特征),怎样走才能路径最短?已知的地图是一个方阵,上面用字母标出了 A,B 区,其它区都标了正号或负号分别表示正负能量辐射区。例如:A + - + -- + - - +- + + + -+ - + - +B + - + -坦克车只能水平或垂直方向上移动到相邻的区。输入描述第一行是一个整数n。原创 2023-03-15 20:36:54 · 194 阅读 · 0 评论 -
蓝桥杯_青蛙跳杯子 java
题目描述X星球的流行宠物是青蛙,一般有两种颜色:白色和黑色。X星球的居民喜欢把它们放在一排茶杯里,这样可以观察它们跳来跳去。如下图,有一排杯子,左边的一个是空着的,右边的杯子,每个里边有一只青蛙。∗WWWBBB其中,W字母表示白色青蛙,B表示黑色青蛙,∗∗ 表示空杯子。X星的青蛙很有些癖好,它们只做 3 个动作之一:跳到相邻的空杯子里。隔着 1 只其它的青蛙(随便什么颜色)跳到空杯子里。隔着 2 只其它的青蛙(随便什么颜色)跳到空杯子里。原创 2023-03-15 22:18:34 · 226 阅读 · 0 评论 -
蓝桥杯_长草 java
题目描述小明有一块空地,他将这块空地划分为n行m列的小块,每行和每列的长度都为 1。小明选了其中的一些小块空地,种上了草,其他小块仍然保持是空地。这些草长得很快,每个月,草都会向外长出一些,如果一个小块种了草,则它将向自己的上、下、左、右四小块空地扩展,这四小块空地都将变为有草的小块。请告诉小明,k个月后空地上哪些地方有草。输入描述输入的第一行包含两个整数nm。接下来n行,每行包含m个字母,表示初始的空地状态,字母之间没有空格。如果为小数点,表示为空地,如果字母为。原创 2023-03-15 22:04:57 · 164 阅读 · 0 评论 -
蓝桥杯_九宫重排 java
题目描述如下图的九宫格中,放着 1 ~ 8 的数字卡片,还有一个格子空着。与空格子相邻的格子中的卡片可以移动到空格中。经过若干次移动,可以形成图 2 所示的局面。我们把上图的局面记为:12345678.把下图的局面记为:123.46758显然是按从上到下,从左到右的顺序记录数字,空格记为句点。题目的任务是已知九宫的初态和终态,求最少经过多少步的移动可以到达。如果无论多少步都无法到达,则输出 -1。输入描述输入第一行包含九宫的初态,第二行包含九宫的终态。输出描述。原创 2023-03-15 22:10:57 · 149 阅读 · 0 评论 -
蓝桥杯_卡片换位 java
题目描述你玩过华容道的游戏吗?这是个类似的,但更简单的游戏。看下面 3 x 2 的格子在其中放 5 张牌,其中 A 代表关羽,B 代表张飞,* 代表士兵。还有个格子是空着的。你可以把一张牌移动到相邻的空格中去(对角不算相邻)。游戏的目标是:关羽和张飞交换位置,其它的牌随便在哪里都可以。输入描述输入两行 6 个字符表示当前的局面输出描述一个整数,表示最少多少步,才能把 A B 换位(其它牌位置随意)输入输出样例示例输入* A**B输出17运行限制最大运行时间:1s。原创 2023-03-15 22:15:44 · 444 阅读 · 3 评论 -
蓝桥杯_移动字母 java
题目描述2x3=6 个方格中放入 ABCDE 五个字母,右下角的那个格空着。如下图所示。和空格子相邻的格子中的字母可以移动到空格中,比如,图中的 C 和 E 就可以移动,移动后的局面分别是:A BD E CA B CD E为了表示方便,我们把 6 个格子中字母配置用一个串表示出来,比如上边的两种局面分别表示为:AB*DECABCD*E题目的要求是:请编写程序,由用户输入若干表示局面的串,程序通过计算,输出是否能通过对初始状态经过若干次移动到达该状态。可以实现输出 1,否则输出 0。原创 2023-03-15 22:22:29 · 115 阅读 · 0 评论 -
蓝桥杯_迷宫与陷阱 java
题目描述小明在玩一款迷宫游戏,在游戏中他要控制自己的角色离开一间由N×N个格子组成的 2D 迷宫。小明的起始位置在左上角,他需要到达右下角的格子才能离开迷宫。每一步,他可以移动到上下左右相邻的格子中(前提是目标格子可以经过)。迷宫中有些格子小明可以经过,我们用 '.' 表示。有些格子是墙壁,小明不能经过,我们用 '#' 表示。此外,有些格子上有陷阱,我们用 'X' 表示。除非小明处于无敌状态,否则不能经过。有些格子上有无敌道具,我们用 '%' 表示。原创 2023-03-15 22:18:11 · 190 阅读 · 0 评论 -
蓝桥杯_时间加法java
题目描述现在时间是a点b分,请问t分钟后,是几点几分?输入描述输入的第一行包含一个整数a。第二行包含一个整数b。第三行包含一个整数t。其中,0≤a≤23,0≤b≤59,0≤tt分钟后还是在当天。输出描述输出第一行包含一个整数,表示结果是几点。第二行包含一个整数,表示结果是几分。输入输出样例示例 1输入320165输出65运行限制最大运行时间:1s最大运行内存: 128M。原创 2023-03-03 10:57:21 · 115 阅读 · 0 评论 -
蓝桥杯_时间显示java
输出时分秒表示的当前时间,格式形如 HH:MM:SS,其中 HH 表示时,值为 0 到 23,M 表示分,值为 0 到 59,S 表示秒,值为 0 到 59。在服务器上,朋友已经获取了当前的时间,用一个整数表示,值为从 1970 年 1 月 1 日 00:00:00 到当前时刻经过的毫秒数。小蓝不用显示出年月日,只需要显示出时分秒即可,毫秒也不用显示,直接舍去即可。给定一个用整数表示的时间,请将这个时间对应的时分秒输出。对于所有评测用例,给定的时间为不超过 101810。输入一行包含一个整数,表示时间。原创 2023-03-03 11:06:56 · 103 阅读 · 0 评论 -
蓝桥杯合法日期_java
没想到,日记很快就被老师发现了问题,原来小蓝记完 8 月 31 日的日记,竟又记了 8 月 32 日和 8 月 33 日的日记。这显然是有问题的,因为根本没有 8 月 32 日和 8 月 33 日。小蓝正在上小学,老师要求同学们在暑假每天记日记。可是小蓝整个暑假都在玩,直到最后一天才想起要记日记。于是小蓝赶紧编了一些日记交给老师。给定一个月份和一个日期,请问 2021 年有没有这一天。日,输入 yes,否则输出 no。输入的第一行包含一个整数。最大运行内存: 128M。原创 2023-03-04 10:47:36 · 110 阅读 · 0 评论 -
蓝桥杯_大胖子走迷宫
题目描述小明是个大胖子,或者说是个大大胖子,如果说正常人占用 1×11×1 的面积,小明要占用 5×55×5 的面积。由于小明太胖了,所以他行动起来很不方便。当玩一些游戏时,小明相比小伙伴就吃亏很多。小明的朋友们制定了一个计划,帮助小明减肥。计划的主要内容是带小明玩一些游戏,让小明在游戏中运动消耗脂肪。走迷宫是计划中的重要环节。朋友们设计了一个迷宫,迷宫可以看成是一个由n×n个方阵组成的方阵,正常人每次占用方阵中 1×11×1 的区域,而小明要占用 5×55×5 的区域。原创 2023-03-15 22:09:41 · 544 阅读 · 0 评论 -
蓝桥杯_顺子日期 java
表示法中,存在任意连续的三位数是一个顺子的日期。例如 20220123 就是一个顺子日期,因为它出现了一个顺子:123;而 20221023 则不是一个顺子日期,它一个顺子也没有。小明想知道在整个 2022 年份中,一共有多少个顺子日期?顺子指的就是连续的三个数字:123、456 等。顺子日期指的就是在日期的。本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。最大运行内存: 512M。原创 2023-03-07 17:24:07 · 345 阅读 · 0 评论 -
蓝桥杯_天数 java
问题描述我们计从 19491949 年 1010 月 11 日至 19491949 年 1010 月 22 日经过了 11 天。请问从 19491949 年 1010 月 11 日至 20222022 年 11 月 11 日经过了多少天?答案提交本题为一道结果填空的题,只需要算出结果后,在代码中使用输出语句将结果输出即可。运行限制最大运行时间:1s最大运行内存: 256M。原创 2023-03-11 09:49:29 · 49 阅读 · 0 评论 -
蓝桥杯_完全日期 java
题目描述本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。如果一个日期中年月日的各位数字之和是完全平方数,则称为一个完全日期。例如:20212021 年 66 月 55 日的各位数字之和为 2+0+2+1+6+5=162+0+2+1+6+5=16,而 1616 是一个完全平方数,它是 44 的平方。所以 20212021 年 66 月 55 日是一个完全日期。原创 2023-03-11 22:50:31 · 191 阅读 · 0 评论 -
蓝桥杯_重叠次数 java
问题描述在同一天中, 从上午 6 点 13 分 22 秒到下午 14 点 36 分 20 秒, 钟表上的 分针和秒针一共重合了多少次?注意时针、分针、秒针都围绕中心敳匀速运动。答案提交这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一 个整数, 在提交答案时只填写这个整数, 填写多余的内容将无法得分。运行限制最大运行时间:1s最大运行内存: 512M。原创 2023-03-12 10:59:48 · 153 阅读 · 0 评论 -
蓝桥杯_航班时间java
但是小 h 得到了女朋友来回航班的起降时间。仔细观察后发现飞机的起降时间都是当地时间。小 h 的女朋友发现小 h 上午十点出发,上午十二点到达美国,于是感叹到"现在飞机飞得真快,两小时就能到美国了"。对于每一组数据输出一行一个时间 hh:mm:ss,表示飞行时间为 hh 小时 mm 分 ss 秒。对于一个可能跨时区的航班,给定来回程的起降时间。假设飞机来回飞行时间相同,求飞机的飞行时间。每组数据包含两行,第一行为去程的 起降 时间,第二行为回程的 起降 时间。保证输入时间合法,飞行时间不超过 24 小时。原创 2023-03-03 10:45:54 · 372 阅读 · 0 评论 -
蓝桥杯_最长递增 java
定一个数列,请问数列中最长的递增序列有多长。,相邻的整数间用空格分隔,表示给定的数列。≤1000,0≤数列中的数≤10。输出一行包含一个整数,表示答案。输入的第一行包含一个整数。为一段递增序列,长度为。最大运行内存: 256M。原创 2023-03-17 09:58:24 · 90 阅读 · 0 评论 -
蓝桥杯_兰顿蚂蚁 java
题目描述兰顿蚂蚁,是于 1986 年,由克里斯·兰顿提出来的,属于细胞自动机的一种。平面上的正方形格子被填上黑色或白色。在其中一格正方形内有一只"蚂蚁"。蚂蚁的头部朝向为:上下左右其中一方。蚂蚁的移动规则十分简单:若蚂蚁在黑格,右转 90 度,将该格改为白格,并向前移一格;若蚂蚁在白格,左转 90 度,将该格改为黑格,并向前移一格。规则虽然简单,蚂蚁的行为却十分复杂。刚刚开始时留下的路线都会有接近对称,像是会重复,但不论起始状态如何,蚂蚁经过漫长的混乱活动后,会开辟出一条规则的"高速公路"。原创 2023-03-16 22:35:16 · 98 阅读 · 0 评论 -
蓝桥杯_缩位求和 java
题目描述在电子计算机普及以前,人们经常用一个粗略的方法来验算四则运算是否正确。比如:248×15=3720248×15=3720把乘数和被乘数分别逐位求和,如果是多位数再逐位求和,直到是 1 位数,得1+5=61+5=6;5×65×6而结果逐位求和为 3。5×65×6 的结果逐位求和与 3 符合,说明正确的可能性很大!!(不能排除错误)请你写一个计算机程序,对给定的字符串逐位求和。输入描述输入描述输入为一个由数字组成的串,表示nn原创 2023-03-17 10:10:04 · 177 阅读 · 0 评论 -
蓝桥杯_防御力 java
题目描述小明最近在玩一款游戏。对游戏中的防御力很感兴趣。我们认为直接影响防御的参数为"防御性能",记作d,而面板上有两个防御值A和B,与d成对数关系,A=2dB=3d(注意任何时候上式都成立)。在游戏过程中,可能有一些道具把防御值A增加一个值,有另一些道具把防御值B增加一个值。现在小明身上有n1 个道具增加A的值和n2 个道具增加B的值,增加量已知。现在已知第i次使用的道具是增加A还是增加B。原创 2023-03-17 11:06:25 · 261 阅读 · 0 评论 -
蓝桥杯_上三角方阵 java
为了考虑到刚学编程的人,我来解释一下学过数学的都知道,顾名思义,左开右闭就是不等于左边第一个,但是会等于右边最后一个,如下图同理,左闭右开,即等于左边第一个,不等于右边最后一个,如下图。原创 2023-03-12 14:06:27 · 263 阅读 · 0 评论 -
力扣_螺旋矩阵II java
力扣题目链接。原创 2023-03-12 14:34:45 · 97 阅读 · 0 评论 -
蓝桥杯_旋转 java
题目描述图片旋转是对图片最简单的处理方式之一,在本题中,你需要对图片顺时针旋转 90 度。我们用一个n×m的二维数组来表示一个图片,例如下面给出一个 3×43×4 的 图片的例子:1 3 5 79 8 7 63 5 9 7这个图片顺时针旋转 90 度后的图片如下:3 9 15 8 39 7 57 6 7给定初始图片,请计算旋转后的图片。输入描述输入的第一行包含两个整数nm,分别表示行数和列数。接下来n行,每行m个整数,表示给定的图片。原创 2023-03-12 16:06:35 · 62 阅读 · 0 评论 -
蓝桥杯_打印大X
题目描述小明希望用星号拼凑,打印出一个大 X,他要求能够控制笔画的宽度和整个字的高度。为了便于比对空格,所有的空白位置都以句点符来代替。输入描述要求输入两个整数 m n,表示笔的宽度,X 的高度。用空格分开。其中,0原创 2023-03-12 19:29:02 · 138 阅读 · 0 评论