第六届科技文化节算法设计大赛
活动主题:设计小算法,激发大智慧。
涵盖算法设计的解题思路、源代码以及运行结果等~
Listen 1024
「 慎独思辨,天道酬勤 」
展开
-
【★】39级台阶
小明刚刚看完电影《第39级台阶》,离开电影院的时候,他数了数礼堂前的台阶数,恰好是 `39` 级!站在台阶前,他突然又想着一个问题:如果我每一步只能迈上 `1` 个或 `2` 个台阶。先迈左脚,然后左右交替,最后一步是迈右脚,也就是说一共要走偶数步。那么,上完 `39` 级台阶,有多少种不同的上法呢?原创 2021-12-06 17:03:21 · 341 阅读 · 0 评论 -
【★】字母距离
两个字母之间的距离定义为它们在字母表中位置的距离。例如 `A` 和 `C` 的距离为2,`L` 和 `Q` 的距离为 `5`。对于一个字符串,我们称字符串中两两字符之间的距离之和为字符串的内部距离。例如:`ZOO` 的内部距离为 `22`,其中 `Z` 和 `O` 的距离为 `11`。请问,`WATJKJDXRGZNXYTW` 的内部距离是多少?原创 2021-12-06 17:02:10 · 599 阅读 · 0 评论 -
【★】时间判断
问题描述 现在时间是 `a` 点 `b` 分,请问 `t` 分钟后,是几点几分?输入格式 输入的第一行包含一个整数 `a`。 第二行包含一个整数 `b`。 第三行包含一个整数 `t`。输出格式 输出第一行包含一个整数,表示结果是几点。 第二行包含一个整数,表示结果是几分。原创 2021-12-06 17:00:59 · 221 阅读 · 0 评论 -
【★】小蓝制作门牌
>小蓝制作门牌<小蓝要为一条街的住户制作门牌号。这条街一共有 2020 位住户,门牌号从 1 到 2020 编号。小蓝制作门牌的方法是先制作 0 到 9 这几个数字字符,最后根据需要将字符粘贴到门牌上,例如门牌 1017 需要依次粘贴字符 1、 0、 1、 7,即需要 1 个字符 0, 2 个字符 1, 1 个字符 7。请问要制作所有的 1 到 4040 号门牌,总共需要多少个字符 2?说明:1.见上详述一、解题思路1、解法一( Java )解法思路: 1 ...原创 2021-11-23 19:42:49 · 713 阅读 · 0 评论 -
【★】蛇形填数
>蛇形填数<如下图所示,小明用从 1 开始的正整数“蛇形”填充无限大的矩阵。1 2 6 7 15 …3 5 8 14 …4 9 13 …10 12 …11 ……(1)容易看出矩阵第二行第二列中的数是 5。请你计算矩阵中第 40 行第 40 列的数是多少?说明:1.见上详述一、解题思路1、解法一( Java )解法思路:找规律,每一个数都是前一个数加上 4*(n-1)。代码如下:import java.util.Scanner;public cl...原创 2021-11-23 19:32:08 · 139 阅读 · 0 评论 -
【★】相似字符串组
>相似字符串组<如果交换字符串 X 中的两个不同位置的字母,使得它和字符串 Y 相等,那么称 X 和 Y 两个字符串相似。如果这两个字符串本身是相等的,那它们也是相似的。例如,"tars" 和 "rats" 是相似的 (交换 0 与 2 的位置); "rats" 和 "arts" 也是相似的,但是 "star" 不与 "tars","rats",或 "arts" 相似。总之,它们通过相似性形成了两个关联组:{"tars", "rats", "arts"} 和 {"star"}。注意,...原创 2021-11-23 19:19:53 · 91 阅读 · 0 评论 -
【★】滑动窗口最大值
>滑动窗口最大值<给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。返回滑动窗口中的最大值。说明:1.见上详述实例1:输入:nums = [1,3,-1,-3,5,3,6,7], k = 3输出:[3,3,5,5,6,7]解释:滑动窗口的位置 最大值--------------- -----[1 ...原创 2021-11-23 19:03:52 · 110 阅读 · 0 评论 -
【★】网络延迟时间
>网络延迟时间<有 n 个网络节点,标记为 1 到 n。给你一个列表 times,表示信号经过 有向 边的传递时间。 times[i] = (ui, vi, wi),其中 ui 是源节点,vi 是目标节点, wi 是一个信号从源节点传递到目标节点的时间。现在,从某个节点 K 发出一个信号。需要多久才能使所有节点都收到信号?如果不能使所有节点收到信号,返回 -1 。说明:1.见上详述实例1:输入:times = [[2,1,1],[2,3,1],[3,4,1]], n...原创 2021-11-23 18:41:53 · 297 阅读 · 0 评论 -
【★】省份数量
>省份数量<有 n 个城市,其中一些彼此相连,另一些没有相连。如果城市 a 与城市 b 直接相连,且城市 b 与城市 c 直接相连,那么城市 a 与城市 c 间接相连。省份 是一组直接或间接相连的城市,组内不含其他没有相连的城市。给你一个 n x n 的矩阵 isConnected ,其中 isConnected[i][j] = 1 表示第 i 个城市和第 j 个城市直接相连,而 isConnected[i][j] = 0 表示二者不直接相连。返回矩阵中 省份 的数量。说明:...原创 2021-11-23 17:23:59 · 382 阅读 · 0 评论 -
【★】数组的度
>数组的度<给定一个非空且只包含非负数的整数数组 nums,数组的度的定义是指数组里任一元素出现频数的最大值。你的任务是在 nums 中找到与 nums 拥有相同大小的度的最短连续子数组,返回其长度。说明:1.数组的度 的定义是指数组里任一元素出现频数的最大值。//提示 1.nums.length 在1到 50,000 区间范围内。 2.nums[i] 是一个在 0 到 49,999 范围内的整数。实例1:输入:[1, 2, 2, 3, 1]输出:2解释:...原创 2021-11-23 17:08:46 · 240 阅读 · 0 评论 -
【★】搜索二维矩阵 II
>搜索二维矩阵 II<编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性:每行的元素从左到右升序排列。每列的元素从上到下升序排列。说明:1.每行的元素从左到右升序排列。2.每列的元素从上到下升序排列。//提示 1. m == matrix.length 2. n == matrix[i].length 3. 1 <= n, m <= 300\ 4. -109 <= matrix[i...原创 2021-11-23 16:39:48 · 527 阅读 · 0 评论 -
【★】最长递增子序列
>最长递增子序列<给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。说明:1.子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。//提示 1. 1 <= nums.length <= 2500 2. -104 <= nums[i] <= 104实例1:输入:nums = [10,9,2,5,3,7,101,18]输出:...原创 2021-11-23 00:18:34 · 81 阅读 · 0 评论 -
【★】猜数字大小 II
>猜数字大小 II<我们正在玩一个猜数游戏,游戏规则如下:我从 1 到 n 之间选择一个数字。你来猜我选了哪个数字。如果你猜到正确的数字,就会 赢得游戏 。如果你猜错了,那么我会告诉你,我选的数字比你的 更大或者更小 ,并且你需要继续猜数。每当你猜了数字 x 并且猜错了的时候,你需要支付金额为 x 的现金。如果你花光了钱,就会 输掉游戏 。说明:1.给你一个特定的数字 n ,返回能够 确保你获胜 的最小现金数,不管我选择那个数字 。//提示 1. 1 <=...原创 2021-11-23 00:03:26 · 230 阅读 · 0 评论 -
【★】猜数字大小
>猜数字大小<猜数字游戏的规则如下:每轮游戏,我都会从 1 到 n 随机选择一个数字。请你猜选出的是哪个数字。如果你猜错了,我会告诉你,你猜测的数字比我选出的数字是大还是小了。你可以通过调用一个预先定义好的接口 int guess(int num) 来获取猜测结果,返回值一共有 3 种可能的情况( -1 ,1 或 0):-1:我选出的数字比你猜的数字小 pick < num1:我选出的数字比你猜的数字大 pick > num0:我选出的数字和你猜的数字一样。...原创 2021-11-22 22:25:00 · 2567 阅读 · 0 评论 -
【★】判断子序列
>判断子序列<给定字符串 s 和 t ,判断 s 是否为 t 的子序列。说明:1.字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace" 是 "abcde" 的一个子序列,而 "aec" 不是)。//提示 1. 0 <= s.length <= 100 2. 0 <= t.length <= 10^4 3. 两个字符串都只由小写字符组成。实例1:输入:s = "abc", t = ...原创 2021-11-22 22:11:32 · 697 阅读 · 0 评论 -
【★】 用栈实现队列
>用栈实现队列<请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty):实现 MyQueue 类:void push(int x) 将元素 x 推到队列的末尾int pop() 从队列的开头移除并返回元素int peek() 返回队列开头的元素boolean empty() 如果队列为空,返回 true ;否则,返回 false说明:1.你只能使用标准的栈操作 —— 也就是只有 push to top, peek...原创 2021-11-22 21:57:00 · 70 阅读 · 0 评论 -
【★】有效的字母异位词
>有效的字母异位词<给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。说明:1.若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。//提示 1. 1 <= s.length, t.length <= 5 * 104 2. s 和 t 仅包含小写字母实例1:输入: s = "anagram", t = "nagaram"输出: true实例2:输入: s = "rat", t = "car"...原创 2021-11-22 21:42:53 · 235 阅读 · 0 评论 -
【★】颠倒二进制位
>寻找数组的中心下标<给你一个整数数组 nums ,请计算数组的 中心下标 。数组的 中心下标 是数组的一个下标,其左侧所有元素相加的和等于右侧所有元素相加的和。说明:1.如果中心下标位于数组最左端,那么左侧数之和视为 0 ,因为在下标的左侧不存在元素。这一点对于中心下标位于数组最右端同样适用。2.如果数组有多个中心下标,应该返回 最靠近左边 的那一个。如果数组不存在中心下标,返回 -1 。//提示 1. 1 <= nums.length <= 104 2....原创 2021-11-22 21:25:47 · 79 阅读 · 0 评论 -
【★】寻找数组的中心下标
>寻找数组的中心下标<给你一个整数数组 nums ,请计算数组的 中心下标 。数组的 中心下标 是数组的一个下标,其左侧所有元素相加的和等于右侧所有元素相加的和。说明:1.如果中心下标位于数组最左端,那么左侧数之和视为 0 ,因为在下标的左侧不存在元素。这一点对于中心下标位于数组最右端同样适用。2.如果数组有多个中心下标,应该返回 最靠近左边 的那一个。如果数组不存在中心下标,返回 -1 。//提示 1. 1 <= nums.length <= 104 2....原创 2021-11-21 00:33:04 · 421 阅读 · 0 评论 -
【★】托普利茨矩阵
>验证回文串<给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:1.本题中,我们 将空字符串定义为有效的回文串 。//提示 1. 1 <= s.length <= 2 * 105 2. 字符串 s 由 ASCII 字符组成实例1:输入: "A man, a plan, a canal: Panama"输出: true解释:"amanaplanacanalpanama" 是回文串实例2:输入: "race a c...原创 2021-11-21 00:06:31 · 451 阅读 · 0 评论 -
【★】验证回文串
>验证回文串<给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:1.本题中,我们将空字符串定义为有效的回文串。//提示 1. 1 <= s.length <= 2 * 105 2. 字符串 s 由 ASCII 字符组成实例1:输入: "A man, a plan, a canal: Panama"输出: true解释:"amanaplanacanalpanama" 是回文串实例2:输入: "race a car...原创 2021-11-09 22:13:19 · 344 阅读 · 0 评论 -
【★】最后一个单词的长度
>最后一个单词的长度<给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串出现的第一个位置(下标从 0 开始)。如果不存在,则返回 -1 。说明:1.当 needle 是空字符串时,我们应当返回什么值呢?2.对于本题而言,当 needle 是空字符串时我们应当返回 0 。这与 C 语言的 strstr() 以及 Java 的 indexOf() 定义相符。//提示 1. 0 <= haystack.len...原创 2021-10-28 21:32:36 · 113 阅读 · 0 评论 -
【★】实现 strStr() 函数
实现 strStr() 函数给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串出现的第一个位置(下标从 0 开始)。如果不存在,则返回 -1 。说明:1.当 needle 是空字符串时,我们应当返回什么值呢?2.对于本题而言,当 needle 是空字符串时我们应当返回 0 。这与 C 语言的 strstr() 以及 Java 的 indexOf() 定义相符。//提示 1. 0 <= haystack.length...原创 2021-10-27 20:56:53 · 335 阅读 · 1 评论