![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
python刷题
不断努力的小菜鸡
这个作者很懒,什么都没留下…
展开
-
钟某人——力扣:查找和最小的k对数字
给定两个以 升序排列 的整数数组 nums1 和 nums2 , 以及一个整数 k 。定义一对值 (u,v),其中第一个元素来自 nums1,第二个元素来自 nums2 。请找到和最小的 k 个数对 (u1,v1), (u2,v2) ... (uk,vk) 。举个例子输入: nums1 = [1,7,11], nums2 = [2,4,6], k = 3输出: [1,2],[1,4],[1,6]解释: 返回序列中的前 3 对数: [1,2],[1,4],[1,6],[7,2]原创 2022-01-14 16:36:42 · 248 阅读 · 0 评论 -
卷上卷队——钟某人打卡的day29——力扣:重复叠加字符串匹配
给定两个字符串a 和 b,寻找重复叠加字符串 a 的最小次数,使得字符串 b 成为叠加后的字符串 a 的子串,如果不存在则返回 -1。注意:字符串 "abc"重复叠加 0 次是 "",重复叠加 1 次是"abc",重复叠加 2 次是"abcabc"。这里有个小的隐藏问题,就是怎么判断a叠加以后里面包含着b,不过这也挺简单的,利用集合做并集就行,直接看代码class Solution: def repeatedStringMatch(self, a: str, b: str) -...原创 2022-01-12 19:09:13 · 113 阅读 · 0 评论 -
卷上卷队——钟某人刷题的day28——力扣:一年中的第几天
给你一个字符串date ,按 YYYY-MM-DD 格式表示一个 现行公元纪年法 日期。请你计算并返回该日期是当年的第几天。通常情况下,我们认为 1 月 1 日是每年的第 1 天,1 月 2 日是每年的第 2 天,依此类推。每个月的天数与现行公元纪年法(格里高利历)一致。这道题没有难度,直接看代码就行class Solution: def dayOfYear(self, date: str) -> int: months = ['01','02','03','0.原创 2022-01-12 19:08:05 · 127 阅读 · 0 评论 -
卷上卷队——钟某人刷题的day 27——力扣:找到小镇的法官
在一个小镇里,按从 1 到 n 为 n 个人进行编号。传言称,这些人中有一个是小镇上的秘密法官。如果小镇的法官真的存在,那么:小镇的法官不相信任何人。每个人(除了小镇法官外)都信任小镇的法官。只有一个人同时满足条件 1 和条件 2 。给定数组trust,该数组由信任对 trust[i] = [a, b]组成,表示编号为 a 的人信任编号为 b 的人。如果小镇存在秘密法官并且可以确定他的身份,请返回该法官的编号。否则,返回 -1。思路还是比较清晰的,针对trust[i[1]]做文章即..原创 2022-01-12 18:56:06 · 68 阅读 · 0 评论 -
卷上卷队——钟某人打卡的day26——力扣:第k个最小的素数分数
给你一个按递增顺序排序的数组 arr 和一个整数 k 。数组 arr 由 1 和若干 素数组成,且其中所有整数互不相同。对于每对满足 0 <= i < j < arr.length 的 i 和 j ,可以得到分数 arr[i] / arr[j] 。那么第k个最小的分数是多少呢?以长度为 2 的整数数组返回你的答案, 这里answer[0] == arr[i]且answer[1] == arr[j] 。思路我描述不出来,直接看代码吧:arr = [1, 2...原创 2022-01-11 16:07:12 · 192 阅读 · 0 评论 -
卷上卷队——钟某人打卡的day25——力扣:学生分数的最小差值
给你一个 下标从 0 开始 的整数数组 nums ,其中 nums[i] 表示第 i 名学生的分数。另给你一个整数 k 。从数组中选出任意 k 名学生的分数,使这 k 个分数间 最高分 和 最低分 的 差值 达到 最小化 。返回可能的 最小差值 。这道题不是特别难,可以用贪心算法来算,下面就直接看代码吧class Solution: def minimumDifference(self, nums: List[int], k: int) -> int: num原创 2022-01-11 16:04:02 · 223 阅读 · 0 评论 -
卷上卷队——钟某人刷题的day24——力扣:计算各个位数不同的数字个数
给定一个非负整数 n,计算各位数字都不同的数字 x 的个数,其中 0 ≤ x < 10^n这道题主要涉及到了一个排列组合问题 ,x = 0时,结果为1,x = 1时,结果为9+1,x = 2时,结果为9*9+9+1,x=3时,结果为9*9*8+9*9+9+1……n = int(input('aaa'))count = 0for i in range(10**n): sets = set(str(i)) if len(sets) == len(str(i)):原创 2022-01-11 16:02:51 · 64 阅读 · 0 评论 -
卷上卷队——钟某人打卡的day23——贪心算法
贪心算法是一种解决多元最大最小值比较好的方法,就像名字一样,这个算法优先解决当前的最优解,但是不一定是全局最优解,这里我们看个题目有一个背包,最多能承载重量为C=150的物品,现在有7个物品(物品不能分割成任意大小),编号为 1~7,重量分别是 wi=[35,30,60,50,40,10,25],价值分别是 pi=[10,40,30,50,35,40,30],现在从这 7 个物品中选择一个或多个装入背包,要求在物品总重量不超过 C 的前提下,所装入的物品总价值最高。如果是我,我会怎么选择?我肯定是.原创 2022-01-11 16:01:07 · 247 阅读 · 0 评论 -
卷上卷队——钟某人python刷题的day22——力扣:保持天际线
给你一座由 n x n 个街区组成的城市,每个街区都包含一座立方体建筑。给你一个下标从 0 开始的 n x n 整数矩阵 grid ,其中 grid[r][c] 表示坐落于 r 行 c 列的建筑物的 高度 。城市的 天际线 是从远处观察城市时,所有建筑物形成的外部轮廓。从东、南、西、北四个主要方向观测到的 天际线 可能不同。我们被允许为 任意数量的建筑物 的高度增加 任意增量(不同建筑物的增量可能不同) 。 高度为 0 的建筑物的高度也可以增加。然而,增加的建筑物高度 不能影响 从任何主要方向观察城原创 2022-01-11 15:59:02 · 98 阅读 · 0 评论 -
卷上卷队——钟某人python刷题的day21——力扣:水壶问题
有两个容量分别为x升 和 y升 的水壶以及无限多的水。请判断能否通过使用这两个水壶,从而可以得到恰好z升 的水?如果可以,最后请用以上水壶中的一或两个来盛放取得的z升水这一题我是真的没有完完整整的写出来,还是看了官方题解以后才写出来,首先先看看DFS的方法思路及算法首先对题目进行建模。观察题目可知,在任意一个时刻,此问题的状态可以由两个数字决定:X 壶中的水量,以及 Y 壶中的水量。在任意一个时刻,我们可以且仅可以采取以下几种操作:把 X 壶的水灌进 Y 壶,直至灌满或倒空;...原创 2022-01-11 15:57:36 · 354 阅读 · 0 评论 -
卷上卷队——钟某人打卡的day20——力扣:在线选举
给你两个整数数组 persons 和 times 。在选举中,第i张票是在时刻为times[i]时投给候选人 persons[i]的。对于发生在时刻 t 的每个查询,需要找出在t 时刻在选举中领先的候选人的编号。在t 时刻投出的选票也将被计入我们的查询之中。在平局的情况下,最近获得投票的候选人将会获胜。实现 TopVotedCandidate 类:TopVotedCandidate(int[] persons, int[] times) 使用persons 和 times 数...原创 2022-01-11 15:50:09 · 163 阅读 · 0 评论 -
卷上卷队——钟某人打卡的day19——力扣:最短补全词
给你一个字符串 licensePlate 和一个字符串数组 words ,请你找出并返回 words 中的 最短补全词 。补全词 是一个包含 licensePlate 中所有的字母的单词。在所有补全词中,最短的那个就是 最短补全词 。在匹配 licensePlate 中的字母时:忽略licensePlate 中的 数字和空格 。不区分大小写。如果某个字母在 licensePlate 中出现不止一次,那么该字母在补全词中的出现次数应当一致或者更多。例如:licensePlate = "aB.原创 2022-01-11 15:48:42 · 82 阅读 · 0 评论 -
卷上卷队——钟某人刷题的day18——力扣:有效的井字游戏
给你一个字符串数组 board 表示井字游戏的棋盘。当且仅当在井字游戏过程中,棋盘有可能达到 board 所显示的状态时,才返回 true 。井字游戏的棋盘是一个 3 x 3 数组,由字符 ' ','X' 和 'O' 组成。字符 ' ' 代表一个空位。以下是井字游戏的规则:玩家轮流将字符放入空位(' ')中。玩家 1 总是放字符 'X' ,而玩家 2 总是放字符 'O' 。'X' 和 'O' 只允许放置在空位中,不允许对已放有字符的位置进行填充。当有 3 个相同(且非空)的字符填充任何行、原创 2022-01-11 15:45:54 · 2111 阅读 · 0 评论 -
卷上卷队——钟某人python刷题的day17——100道python例题
今天的第一题~有两个磁盘文件A和B,各存放一行字母,要求把这两个文件中的信息合并(按字母顺序排列), 输出到一个新文件C中。没有难度,直接上代码dict1 = ['a','b','c','e']dict2 = ['w','r','f','g']new_list = dict1+dict2new_list.sort()print(new_list)第二题~从键盘输入一个字符串,将小写字母全部转换成大写字母,然后输出到一个磁盘文件"test"中保存。用个upper函数就可以转换原创 2022-01-11 13:31:06 · 239 阅读 · 0 评论 -
卷上卷队——钟某人刷题的day16——蓝桥杯入门题
今天整点蓝桥杯的题玩玩第一题~要将"China"译成密码,译码规律是:用原来字母后面的第4个字母代替原来的字母.例如,字母"A"后面第4个字母是"E"."E"代替"A"。因此,"China"应译为"Glmre"。请编一程序,用赋初值的方法使cl、c2、c3、c4、c5五个变量的值分别为,’C’、’h’、’i’、’n’、’a’,经过运算,使c1、c2、c3、c4、c5分别变为’G’、’l’、’m’、’r’、’e’,并输出。这题可以用ascii码进行处理,ord函数是字符转成ascii码,c原创 2022-01-10 15:12:48 · 179 阅读 · 0 评论 -
卷上卷队——钟某人的刷题日常day15——力扣的日常
为了不在赎金信中暴露字迹,从杂志上搜索各个需要的字母,组成单词来表达意思。给你一个赎金信 (ransomNote) 字符串和一个杂志(magazine)字符串,判断 ransomNote 能不能由 magazines 里面的字符构成。如果可以构成,返回 true ;否则返回 false 。magazine 中的每个字符只能在 ransomNote 中使用一次。这个……怎么说呢,我本来的想法就是,将他们做成列表,然后相同的顶掉,剩下的不同就返回true或false,接下来先上代码rans原创 2022-01-10 14:26:16 · 164 阅读 · 0 评论 -
卷上卷队——钟某人python打卡的day14——力扣日常
今天的第一题~给你一个整数数组 nums 和一个整数 k ,按以下方法修改该数组:选择某个下标 i并将 nums[i] 替换为 -nums[i] 。重复这个过程恰好 k 次。可以多次选择同一个下标 i 。以这种方式修改数组后,返回数组 可能的最大和 。这道题是真的简单,想要达成最大和的目标就盯着数组中最小值下手就行了,怎么找最小值呢?当然是min方法啦,下面是代码贪,什么都可以贪心class Solution(object): def largestSumAfterKN.原创 2022-01-10 14:22:12 · 157 阅读 · 0 评论 -
卷上卷队——钟某人python刷题的day13——力扣日常
今天只有一题,先试试水以下是题目给你一个长度为 n 的整数数组 score ,其中 score[i] 是第 i 位运动员在比赛中的得分。所有得分都 互不相同 。运动员将根据得分 决定名次 ,其中名次第 1 的运动员得分最高,名次第 2 的运动员得分第 2 高,依此类推。运动员的名次决定了他们的获奖情况:名次第 1 的运动员获金牌 "Gold Medal" 。名次第 2 的运动员获银牌 "Silver Medal" 。名次第 3 的运动员获铜牌 "Bronze Medal" 。从名次第原创 2022-01-10 14:18:20 · 97 阅读 · 0 评论 -
卷上卷队——钟某人Python刷题的Day12——100道python例题
今天的第一题~输出杨辉三角前十行我这里的方法是,先忽略前两行,将剩下的八行进行输出,而对于这八行,除去前后两个1,剩下的可以看作上一行前两个值相加,然后存入新列表,然后去掉源列表的第一个数,接下来就直接上代码吧那个时候我还不知道滑窗算法这种东西,能自己琢磨出来我感觉我也是挺牛逼的,虽然……有那么一点点差别,但总体还是差不多的'''杨辉三角'''num_list = [1,1]count = 8print([1])print([1,1])while count > 0:原创 2022-01-10 14:15:38 · 81 阅读 · 0 评论 -
卷上卷队——钟某人刷题的day11——100道python例题
今天的第一题~将一个数组逆序输出在python中数组你可以理解为列表,那么这下就简单了,直接上代码吧a = [1,2,3,4,5]print(''.join(str(i) for i in a[::-1]))第二题~两个 3 行 3 列的矩阵,实现其对应位置的数据相加,并返回一个新矩阵这个很简单,套两层for就完了a = [[1,2,3] ,[4,5,6] ,[7,8,9]]b = [[9,8,7] ,[6,5,4] ,[3,2,1原创 2022-01-10 14:10:53 · 406 阅读 · 0 评论 -
卷上卷队——钟某人刷题的day10——100道python例题
今天的第一题~求一个3*3矩阵主对角线元素之和。分为两部分,第一部分为输入,第二部分为计算并输出,难度不高,直接上代码吧'''求一个3*3矩阵主对角线元素之和。'''# enter parta1 = []for i in range(3): a2=[] for j in range(3): in_ = int(input('please enter the numbers:')) a2.append(in_) a1.append原创 2022-01-10 14:05:37 · 81 阅读 · 0 评论 -
卷上卷队——钟某人刷题的day9——Python的100道例题
今天的第一题~循环输出1~100以内的素数思路很简单,对于任意一个数i,如果在2到i之间存在能够整除i的数的话,那i就不是素数,直接判断i+1即可,直接看代码吧a = []for i in range(1,101): for num in range(2,i): if i % num == 0: break else: a.append(i) a.remove(1)print(a)这里需要注意,跟for一个代码原创 2022-01-10 14:02:56 · 81 阅读 · 0 评论 -
卷上卷队——钟某人的python刷题day8——100道python例题
今天的第一题~按相反的顺序输出列表的值嗯,简简单单a = [1,2,3]for i in a[::-1]: print(i)第二题~按逗号分隔列表题目没说清楚,我补充一下,是将列表输出,以逗号分割,这题还是蛮简单的a = [1,2,3]for i in a: print(i,end=',') print(','.join(str(x) for x in a))两种方法,任君选择~第三题~使用函数,输出三次 RUNOOB 字符串正原创 2022-01-10 13:57:43 · 85 阅读 · 0 评论 -
卷上卷队——钟某人python刷题的day7——100道python例题
今天的第一题~利用递归方法求5!。没啥好说的,for就完了。s = 1for i in range(1,6): s *= iprint(s)第二题~利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来这里利用列表可以完美解决问题,也可以用reverse'''利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来'''in_ =input('请输入字符:')a = []for i in in_: a.append(i)print('原创 2022-01-10 13:53:58 · 65 阅读 · 0 评论 -
卷上卷队——钟某人python刷题的day6——100道python例题
题目:打印出如下图案(菱形): * *** ************ ***** *** *这道题我第一思路就是用格式化函数,因为他真的是太方便了,不多说,代码如下star = [1,3,5,7]for i in range(0,7): if i <= 3: print(f"{'*'*star[i]:^7}") else: print(f"{'*'*star[-(i-2)]:^7}")对比原版代码及思路原创 2022-01-09 22:47:24 · 190 阅读 · 0 评论 -
卷上卷队——钟某人的python刷题day5——python的一百道例题
第不知道多少题~一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高写个while,再定义个共十次落地,落地一次次数-1,然后定义个列表,用于记录每次反弹的高度,然后定义个总高度=100,每次反弹用当前高度*2加上总高度,Ok,上代码'''一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高'''heights = []times = 1height =原创 2022-01-09 22:20:12 · 161 阅读 · 0 评论 -
卷上卷队——钟某人刷题的day4——python100例
第十二题~将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5这一题的思路可以这样: 将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5 ''' ''' 首先我们假设一个数a,for i in range(2,a+1) 如果在这个期间有可以整除a的数,记录下来,停止循环,记录模 对模无限循环上述过程,直到i == 模别看思路挺简单的,为了这个我debug了整整一个下午啊T.T,不多说了,上代码number = int(input('请输入你想查询的数字'))原创 2022-01-09 20:44:41 · 199 阅读 · 0 评论 -
卷上卷队——钟某人刷题的day3——python100例
第八题~输出 9*9 乘法口诀表这个的思路及其简单,只需要两个for就够了,问题有两个,第一是怎么剔除可能重复的部分,第二点是怎么让它输出像个我们认识的口诀表。第一点很简单,开头加个count,在第一个循环那里count += 1,然后在第二个for那里写成range(count,10)就行了,第二点主要考察python的输出格式,具体的,请看代码'''输出 9*9 乘法口诀表'''count = 0for i in range(1,10): count += 1 p原创 2022-01-09 20:36:42 · 68 阅读 · 0 评论 -
卷上卷队——钟某人刷题的day2——python的100道例题
第四题~输入某年某月某日,判断这一天是这一年的第几天思路很清晰,先判断这个月前面的几个月天数之和,再加上这个月的天数就行了。注意闰年。上代码'''输入某年某月某日,判断这一天是这一年的第几天'''year = int(input('请输入年:'))month = int(input('请输入月:')) - 1day = int(input('请输入日:'))days = [31,28,31,30,31,30,31,31,30,31,30,31]total_day = 0fo原创 2022-01-09 20:23:33 · 199 阅读 · 0 评论 -
卷上卷队——钟某人刷题的day1——python的100道例题
第一题~有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?这一题的大致思路还是很清晰的,三个for就可以搞定,问题是怎么确保不重复。当然,这也很简单,直接加个判断即可。那么,理论存在,实践开始~'''有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?'''nums = [1,2,3,4]for i in nums: for j in nums: for k in nums:原创 2021-11-20 22:18:39 · 125 阅读 · 1 评论