
算法
Spaceack
这个作者很懒,什么都没留下…
展开
-
MoonBit Online Judge 202412-002 Supply Problem in Hiking 题解
通过这次学习,了解到了使用Moonbit循环与判断的的基本方法,真是太好啦。欢迎关注 公-众-号【编程之舞】,获取更多技术资源。原创 2025-01-28 23:48:46 · 338 阅读 · 0 评论 -
MoonBit Online Judge 202412-001 Find the Unique Number 题解
通过这次学习,了解到了使用Moonbit语言数组的基本方法,真是太好啦。欢迎关注 公-众-号【编程之舞】,获取更多技术资源。原创 2025-01-28 23:05:20 · 195 阅读 · 0 评论 -
使用简单算法两小时实现猎杀乌姆帕斯(Hunt the Wumpus)Python小游戏
首先看一下最终实现的效果,多图杀猫~原创 2021-12-07 01:06:39 · 2285 阅读 · 7 评论 -
leetcode-350-两个数组的交集 II 题解
题目给定两个数组,编写一个函数来计算它们的交集。示例 1:输入:nums1 = [1,2,2,1], nums2 = [2,2]输出:[2,2]示例 2:输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出:[4,9] 说明:输出结果中每个元素出现的次数,应与元素在两个数组中出现次数的最小值一致。我们可以不考虑输出结果的顺序。进阶:如果给定的数组已经排好序呢?你将如何优化你的算法?如果 nums1 的大小比 nums2 小很多,哪种方法更原创 2021-06-24 23:01:18 · 125 阅读 · 0 评论 -
Python数据结构与算法-栈
栈栈(stack)又名堆栈,是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。允许进行插入和删除操作的一段称为栈顶(top),另一端称为栈底(bottom)栈底固定,栈顶浮动。栈中元素个数为零时称为空栈。插入一般称为进栈(PUSH), 删除则称为退栈(POP)。后进先出(LIFO,Last In First Out), 后进先出表。进栈和退栈时间复杂度都为O(1)class Stack(Object): def __init__(self, limit=10):原创 2020-11-29 22:54:43 · 222 阅读 · 0 评论 -
计蒜客-简单素数筛法 题解
'''time:1000msmemory:65536Kdesc:小度机器人最近正在添加功能,Robin希望小度机器人可以告诉他从1到N( 1 < N <= 10000)有多少个素数。请你来帮帮他吧?input_fomat:输入包括一行,仅一个数字N。output_format:输出在(1, N]区间内的所有的素数。提示:想像将(1, N]的数字看成沙子和小石头,视非素数为沙子,视素数为小石头。将沙子筛走,剩下的就是小石头了。考虑到N最大也就是10000,你可以开一个长度为1000原创 2021-02-22 22:52:59 · 157 阅读 · 0 评论 -
计蒜客-元素移除 题解
'''time:1000msmemory:65536Kdesc:给定一个数组和一个数(该数不一定在数组中),从数组里删掉这个数字,返回剩下的数组长度。如:A[]=1,2,3,4,5,要删除数字 3,那么返回数组长度为 4。亲爱的小伙伴们,题目是不是很简单呢?提示:int removeElement(int A[], int n, int elem)其中,n代表数组长度,elem代表要删掉的元素。input_fomat:第一行输入一个数 n(1 \leq n \leq 100),接下来一行 n原创 2021-02-22 22:51:54 · 210 阅读 · 0 评论 -
计蒜客-矩阵翻转 题解
'''time:1000msmemory:65536Kdesc:晓萌最近在做一个翻转图片的应用,你可能也知道,图片其实是由一个个的点组成的。于是,晓萌想先做一个可以翻转矩阵的程序,来解决他问题的核心部分。input_fomat:输入第一行包括由空格分开的整数 M,N,T(0 < N,M < 200),T 的值为 0 或 1。其中 M 和 N 分别表示待处理矩阵的行数与列数,T 为 0 时表示左右翻转,为 1 时表示上下翻转。之后的 M 行,每行包括由空格分隔的 N 个整数,依次为输原创 2021-02-22 22:50:38 · 206 阅读 · 0 评论 -
计蒜客-奇怪的国家 题解
"""time:1000msmemory:65536Kdesc:有一个奇怪的国家,里面的国民对于事情的态度永远只有两面。当两个人遇到一起讨论一个事情的时候——两个持赞同观点的人遇到一起后会对这个事情都继续赞同;一个持赞同观点的人遇到一个持不赞同观点的人的时候,两人都会不再继续赞同;两个持不赞同观点的人遇到一起讨论后反而会对这个事情开始赞同。input_fomat:输入包括两行,每行包括 N(1 \leq N \leq 50)N(1≤N≤50) 个数字,分别表示两个人对于 N 个事情对应的看法原创 2021-02-22 22:49:48 · 164 阅读 · 0 评论 -
计蒜客-泥塑课 题解
'''time:1000msmemory:65536Kdesc:小米是一个幼儿园老师,每学期的泥塑课上,她都会给每个学生发不超过 250 立方厘米的等量橡皮泥,教大家做泥塑。在上课过程中,她发现每个班都恰好有一个小朋友会去抢另一个小朋友的橡皮泥,于是她决定,在正式开始做泥塑前,让大家把手里的橡皮泥都捏成一个立方体,并且测量手里捏好的橡皮泥的长、宽和高。这样,她就可以知道谁被谁抢了橡皮泥了。input_fomat:小米老师在不同的学期可能会带一个班或者同时带多个班,因此输入数据可能有一组或者多组原创 2021-02-22 22:47:30 · 139 阅读 · 0 评论 -
天池编程大赛周赛 Character deletion 题解
题目描述Enter two strings and delete all characters in the second string from the first stringString contains spaces 1≤len(str),len(sub)≤1051\leq len(str),len(sub) \leq 10^51≤len(str),len(sub)≤105示例示例 1:Input: str=”They are students”,sub=”aeiou”Output:原创 2021-02-21 00:05:54 · 214 阅读 · 0 评论 -
leetcode-77-组合 题解
题目描述给定两个整数 n 和 k,返回 1 … n 中所有可能的 k 个数的组合。示例示例 1:输入: n = 4, k = 2输出:[[2,4],[3,4],[2,3],[1,2],[1,3],[1,4],]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/robot-return-to-origin解题思路虽然是中等题,但是使用python内置函数,就简单了。组合,没有重复的情况(不放回抽样组合) 使用原创 2021-02-20 23:16:24 · 166 阅读 · 0 评论 -
leetcode-347-前K个高频元素 题解
题目描述给定一个非空的整数数组,返回其中出现频率前 k 高的元素。提示:你可以假设给定的 k 总是合理的,且 1 ≤ k ≤ 数组中不相同的元素的个数。你的算法的时间复杂度必须优于 O(n log n) , n 是数组的大小。题目数据保证答案唯一,换句话说,数组中前 k 个高频元素的集合是唯一的。你可以按任意顺序返回答案。示例示例 1:输入: nums = [1,1,1,2,2,3], k = 2输出: [1,2]示例 2:输入: n原创 2021-02-20 23:13:53 · 186 阅读 · 0 评论 -
超级码力初赛第四场 from start to end 题解
题目描述字符串大师赐给了你一种名为"从头到尾"的法术,其作用如下:对一个字符串施加一次该法术的效果是:将一个字符串的第一个字母放到该字符串的结尾。例如对串"abcd"施加一次法术后可以得到串"bcda"。现在给你两个字符串,请你判断是否可以通过任意次(可以是0次)该法术将两个字符串变得一模一样。1 \leq |s1|, |s2| \leq 200字符串仅由小写字母构成示例示例 1:输入:"abcd""bcda"输出:true示例 2:输入:"abcd""abdc"原创 2021-02-20 23:12:09 · 244 阅读 · 0 评论 -
leetcode-485-最大连续1的个数 题解
题目描述给定一个二进制数组, 计算其中最大连续1的个数。注意:输入的数组只包含 0 和1。输入数组的长度是正整数,且不超过 10,000。示例示例 1:输入: [1,1,0,1,1,1]输出: 3解释: 开头的两位和最后的三位都是连续1,所以最大连续1的个数是 3.来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/robot-return-to-origin简单,一次通过。题解1:执行用时:496 ms, 在所有原创 2021-02-20 23:10:20 · 153 阅读 · 0 评论 -
leetcode-841-钥匙和房间 题解
题目描述有 N 个房间,开始时你位于 0 号房间。每个房间有不同的号码:0,1,2,…,N-1,并且房间里可能有一些钥匙能使你进入下一个房间。在形式上,对于每个房间 i 都有一个钥匙列表 rooms[i],每个钥匙 rooms[i][j] 由 [0,1,…,N-1] 中的一个整数表示,其中 N = rooms.length。 钥匙 rooms[i][j] = v 可以打开编号为 v 的房间。最初,除 0 号房间外的其余所有房间都被锁住。你可以自由地在房间之间来回走动。如果能进入每个房间返回 tru原创 2020-12-09 06:56:37 · 1197 阅读 · 0 评论 -
leetcode-557-反转字符串中的单词 III 题解
题目描述给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。注意:在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。示例示例 :输入:"Let's take LeetCode contest"输出:"s'teL ekat edoCteeL tsetnoc"来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/robot-return-to-origin打卡水题, 很简单的字符原创 2021-02-20 23:06:22 · 204 阅读 · 0 评论 -
超级码力初赛第二场 五字回文 题解
题目描述小栖最近很喜欢回文串,由于小栖的幸运数字是5,他想知道形似“abcba"的回文串在他给定的字符串中的数量s.length <= 10^6字符串s只包含小写字母示例示例1 :输入:s = "abcba"输出:1示例2:输入:s = "abcbabcccb"输出:2解释:形似”abcba“的字符串有”abcba“和”cbabc“来源:九章算法打卡水题, 很简单的字符串操作题. 根据题意可知5位数的字符串,以中间位分割,两侧对称位置相同,且单侧与中间位置的原创 2021-02-20 23:03:13 · 183 阅读 · 0 评论 -
算法标签
数据结构数组 Array栈 Stack队列 Queue优先队列(Priority Queue, heap)链表 LinkedList(single/double)Tree/ Binary TreeBinary Search TreeHashTableDisjoint SetTrieBloomFliterLRU Cache算法分类线性结构莫队 (Mo’s Algorithm)前缀和基本数组向量链接表(linked list)栈(stack)队列块..原创 2021-02-24 22:45:46 · 347 阅读 · 1 评论 -
leetcode-461-汉明距离 题解
题目描述两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。给出两个整数 x 和 y,计算它们之间的汉明距离。注意:0 ≤ x, y < 2^31.示例示例 1:输入: x = 1, y = 4输出: 2解释:1 (0 0 0 1)4 (0 1 0 0) ↑ ↑上面的箭头指出了对应二进制位不同的位置。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/hamming-dist原创 2021-01-31 18:00:21 · 275 阅读 · 0 评论 -
leetcode-657-机器人能否返回原点 题解
题目描述在二维平面上,有一个机器人从原点 (0, 0) 开始。给出它的移动顺序,判断这个机器人在完成移动后是否在 (0, 0) 处结束。移动顺序由字符串表示。字符 move[i] 表示其第 i 次移动。机器人的有效动作有 R(右),L(左),U(上)和 D(下)。如果机器人在完成所有动作后返回原点,则返回 true。否则,返回 false。注意:机器人“面朝”的方向无关紧要。 “R” 将始终使机器人向右移动一次,“L” 将始终向左移动等。此外,假设每次移动机器人的移动幅度相同。示原创 2021-01-31 17:56:10 · 194 阅读 · 0 评论 -
leetcode-1046-最后一块石头的重量 题解
题目描述有一堆石头,每块石头的重量都是正整数。每一回合,从中选出两块 最重的 石头,然后将它们一起粉碎。假设石头的重量分别为 x 和 y,且 x <= y。那么粉碎的可能结果如下:如果 x == y,那么两块石头都会被完全粉碎;如果 x != y,那么重量为 x 的石头将会完全粉碎,而重量为 y 的石头新重量为 y-x。最后,最多只会剩下一块石头。返回此石头的重量。如果没有石头剩下,就返回0。示例示例 1:输入:[2,7,4,1,8,1]输出:1解释:先选出 7 和 8,得到原创 2021-01-30 23:52:57 · 192 阅读 · 0 评论 -
基于相同颜色连通像素个数的统计进行验证码识别
问题: 对如下图中的字符进行识别:样本:解题思路:无论是图像,音频的识别,不外乎是对各种特征(特征向量)进行统计归纳。放大后的样本:通过观察,发现这是一张简单的,非常有规律可循的图。 越有规律越容易进行分类。这里的思路就是自左至右依次对相同颜色的像素连通区进行像素个数统计,从而制成像素与字符对应的字典进行识别。局限性及应对措施:此种方法只针对’少量的’,’简单的‘字符图形。若字符种类过多,容易造成不同像素个数冲突的问题。针对冲突问题,一种有限的解决办法即针对’不同’的特原创 2020-11-25 22:00:58 · 344 阅读 · 1 评论 -
leetcode-414-第三大的数 题解
题目描述给定一个非空数组,返回此数组中第三大的数。如果不存在,则返回数组中最大的数。要求算法时间复杂度必须是O(n)。示例示例 1:输入: [3, 2, 1]输出: 1解释: 第三大的数是 1.示例 2:输入: [1, 2]输出: 2解释: 第三大的数不存在, 所以返回最大的数 2 .示例 3:输入: [2, 2, 3, 1]输出: 1解释: 注意,要求返回第三大的数,是指第三大且唯一出现的数。存在两个值为2的数,它们都排第二。来源:力扣(Lee原创 2021-01-30 21:43:14 · 245 阅读 · 2 评论