算法习题集
算法习题练习
Vagrant-z
Python
展开
-
python 剑指offer习题集(持续更新中)
剑指offer习题集原创 2021-11-17 22:23:03 · 131 阅读 · 0 评论 -
python JZ73 翻转单词序列(剑指offer)
思路1:使用列表和python内置方法。原创 2024-02-27 14:19:06 · 155 阅读 · 0 评论 -
python JZ18 删除链表的节点(剑指offer)
思路1:常规遍历删除。原创 2024-02-27 10:58:38 · 180 阅读 · 0 评论 -
python JZ76 删除链表中重复的结点(剑指offer)
【代码】python JZ76 删除链表中重复的结点(剑指offer)原创 2024-02-27 10:46:31 · 166 阅读 · 0 评论 -
python JZ35 复杂链表的复制(剑指offer)
思路1:引入dict。原创 2024-02-26 11:07:02 · 230 阅读 · 0 评论 -
python JZ22 链表中倒数最后k个结点(剑指offer)
【代码】python JZ22 链表中倒数最后k个结点(剑指offer)原创 2024-02-22 19:49:18 · 167 阅读 · 0 评论 -
python JZ23 链表中环的入口结点(剑指offer)
思路:#通过定义slow和fast指针,slow每走一步,fast走两步,若是是有环,则一定会在环的某个结点处相遇(slow==fast),设从头到入口距离为A,入口到相遇点距离为B,相遇点再到入口长为C,可以得出slow走了A+B,fast走了A+2B+C,因为fast是slow的2倍,所以2A+2B=A+2B=C,故A的距离等于C的距离,因此当快慢指针相遇后,将快指针从头开始以slow相同速度移动,slow与fast将相遇在入口节点。思路1:使用列表进行状态检测。原创 2024-02-22 19:27:57 · 178 阅读 · 0 评论 -
python JZ52 两个链表的第一个公共结点(剑指offer)
思路3:双指针遍历(先走自己再走对方)思路1:常规遍历对比。原创 2024-02-21 14:47:36 · 224 阅读 · 0 评论 -
python JZ25 合并两个排序的链表(剑指offer)
思路2:额外列表排序。原创 2024-02-21 10:52:21 · 193 阅读 · 0 评论 -
python JZ24 反转链表(剑指offer)
思路1:使用列表,模拟入栈出栈操作进行重构列表。原创 2024-02-19 13:21:51 · 151 阅读 · 0 评论 -
python JZ13 机器人的运动范围(剑指offer)
题目要求:思路:思路1:递归遍历(伪代码)movingCount(threshold, rows, cols) : 根据入参定义map地图,位置(x,y)处值为1,标识可以走,0标识已经走过 调用移动moving函数,传参(第几行,第几列,threshold,rows,cols,Map),由题意从0,0位置开始 返回地图上0的数量,即为移动最大格子数moving(当前位置第几行,当前位置第几列,threshold,rows行,cols列,Map地图): 先将当前位置标记为走过原创 2021-12-06 17:51:28 · 320 阅读 · 0 评论 -
python JZ12 矩阵中的路径(剑指offer)
题目要求:思路:思路1:伪代码主函数(矩阵,路径) 如果矩阵为空(两种空情况): 直接返回False 否则: 遍历矩阵所有点(根据题意,每个点都有可能是起点) 如果是起点,调用查找函数(矩阵,已走路径列表,待查路径) #已走路径列表对应的点+待查路径 = 主函数传入路径() 如果查找函数返回为True: 直接退出循环,返回True 如果遍历结束,为得到True结果,矩阵不存在该路径,返回False查找函数(矩阵,已走路径列表,待查路径) 如原创 2021-11-21 16:33:27 · 572 阅读 · 0 评论 -
python3 JZ11 旋转数组的最小数字(剑指offer)
题目要求:思路:思路1:内置函数min,简洁(一般不会允许这么搞)思路2:二分查找代码如下:思路1:## 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可## # @param rotateArray int整型一维数组 # @return int整型#class Solution: def minNumberInRotateArray(self , rotateArray: List[int]) -> int: return原创 2021-11-21 01:44:00 · 272 阅读 · 0 评论 -
python JZ8 二叉树的下一个结点(剑指offer)
题目要求:描述给定一个二叉树其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的next指针。下图为一棵有9个节点的二叉树。树中从父节点指向子节点的指针用实线表示,从子节点指向父节点的用虚线表示思路:思路1:递归(伪代码)获取下个节点函数(当前节点): 如果当前节点有右子节点: #中序遍历,说明左子树和本身已被遍历,接下来要先进行遍历右子树 递归右子节点 如果当前节点无右子节点,看本身有无next节点: #中序遍历,说原创 2021-11-20 19:37:26 · 1040 阅读 · 2 评论 -
python JZ7 重建二叉树(剑指offer)
题目要求:思路:思路1:伪代码重构函数(前序遍历结果,中序遍历结果) 先判断前序遍历结果列表是否大于1: 根据前序遍历结果拿到当前树根节点TreeNode(pre[0]) 将当前树分为左右子树,然后获取左右子树的前序遍历结果,中序遍历结果 当前根结点的左子节点 = 重构函数(左子树前序遍历结果,左子树中序遍历结果) 当前根结点的右子节点 = 重构函数(右子树前序遍历结果,右子树中序遍历结果) 再判断前序遍历结果列表是否等于1: 说明该根节点无左右子树,直接返回根节点即可 否原创 2021-11-18 14:11:44 · 647 阅读 · 0 评论 -
python JZ6 从尾到头打印链表(剑指offer)
题目要求:思路:思路1:顺序打印,反转列表代码如下:思路1代码:# class ListNode:# def __init__(self, x):# self.val = x# self.next = None## 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可## # @param listNode ListNode类 # @return int整型一维数组#class Solution: def原创 2021-11-18 13:51:04 · 328 阅读 · 0 评论 -
python JZ5 替换空格(剑指offer)
题目要求:描述请实现一个函数,将一个字符串s中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。数据范围:0 <= len(s) <=1000。保证字符串中的字符为大写英文字母、小写英文字母和空格中的一种。进阶:时间复杂度O(n),空间复杂度O(n)示例:输入:“We Are Happy”返回值:“We%20Are%20Happy”思路:思路1:使用内置replace方法(最简单)思路2:循环替换原创 2021-11-17 22:50:21 · 368 阅读 · 0 评论 -
python JZ4 二维数组中的查找(剑指offer)
题目要求:在一个二维数组array中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。[[1,2,8,9],[2,4,9,12],[4,7,10,13],[6,8,11,15]]给定 target = 7,返回 true。给定 target = 3,返回 false。数据范围:矩阵的长宽满足5000≤n,m≤500 ,矩阵中的值满足 0 ≤val≤ 10^90进原创 2021-11-17 22:17:18 · 183 阅读 · 0 评论 -
python JZ3 数组中重复的数字(剑指offer)
题目要求:描述在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任一一个重复的数字。 例如,如果输入长度为7的数组[2,3,1,0,2,5,3],那么对应的输出是2或者3。存在不合法的输入的话输出-1数据范围:进阶:时间复杂度O(n),空间复杂度O(n)示例:0 <= n <= 10000输入:[2,3,1,0,2,5,3]返回值:2说明:2或3都是对的思路:思路1:先排序,判断原创 2021-11-17 21:42:20 · 149 阅读 · 0 评论 -
python 顺序输出元素数位上各个数字的平方和大于元素本身的数(蓝桥杯)
题目要求:对于整数区间[N,M],已知:输入说明:两个整数N和M。输出说明:顺序输出元素数位上各个数字的平方和大于元素本身的数。输入样例:21 25输出样例:25说明:例如22的数位数字为2,2,这两个数字的平方和为8,小于22,不满足筛选条件所以不输出;25的数位数字为2,5,这两个数字平方和为29,大于25,满足筛选条件,所以将25输出。代码图代码如下'''对于整数区...原创 2020-02-24 15:07:57 · 743 阅读 · 1 评论 -
python 序列求和(蓝桥杯)
题目要求:资源限制时间限制:1.0s 内存限制:256.0MB问题描述求1+2+3+…+n的值。输入格式输入包括一个整数n。输出格式输出一行,包括一个整数,表示1+2+3+…+n的值。样例输入4样例输出10样例输入100样例输出5050说明:有一些试题会给出多组样例输入输出以帮助你更好的做题。一般在提交之前所有这些样例都需要测试通过才行,但这不代表这几组样例...原创 2020-02-25 16:29:42 · 1206 阅读 · 0 评论 -
python 生产方案择优处理(蓝桥杯)
题目要求:某冶金工厂生产两类合金产品,分别为M1和M2。生产M1和M2时需要三种原材料(含某种原材料的需求量为0的情形)。现有一批这样的原材料即将过期,希望尽快用这些原材料生产M1和M2(每种原材料的数量均小于10000),请给出浪费原材料总量最少(即三种剩余原材料的数量和最小)的生产方案。如果方案不止一种,请输出M1生产量最少时所对应的方案。输入说明:第一行给出生产M1所需的三种原材...原创 2020-02-24 19:15:28 · 1076 阅读 · 7 评论 -
python Fibonacci数列(蓝桥杯)
小提示:今天使用蓝桥杯系统时发现一个问题,同样的代码,封装和不封装在蓝桥杯评测系统运行时是不一样的,首先是不封装运行的数据如下:然后是封装后运行的数据如下:可以看到,虽然封装后的占用内存稍大于不封装的,但是封装后的运行速度明显比不封装的快题目要求:时间限制:1.0s 内存限制:256.0MB问题描述Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2...原创 2020-02-25 15:33:35 · 1187 阅读 · 1 评论 -
python 求圆的面积(蓝桥杯)
题目要求:资源限制时间限制:1.0s 内存限制:256.0MB问题描述给定圆的半径r,求圆的面积。输入格式输入包含一个整数r,表示圆的半径。输出格式输出一行,包含一个实数,四舍五入保留小数点后7位,表示圆的面积。说明:在本题中,输入是一个整数,但是输出是一个实数。对于实数输出的问题,请一定看清楚实数输出的要求,比如本题中要求保留小数点后7位,则你的程序必须严格的输出7位小...原创 2020-02-25 16:26:06 · 4374 阅读 · 0 评论 -
python 统计其中字符串中字母个数(蓝桥杯)
题目要求:给出一个字符串(长度<10000),统计其中四个字母(b、m、p、t)出现的次数,并按出现次数降序输出字母和该字母的出现次数(不区分大小写),如果两个字母的出现次数一样,则按照字母升序输出。输入说明:一个字符串。输出说明:分4行输出,每个字母一行。格式为字母和出现次数,以单个空格分隔。输入样例:123aabapsobwo输出样例:b 2p 1m 0t 0代码图...原创 2020-02-24 17:07:25 · 11867 阅读 · 1 评论 -
python DNA序列的基因片段检测(蓝桥杯)
题目要求:有一个DNA序列,用字符串S表示(仅包含’A’、’C’、’G’、’T’四种字符,长度<100000)。现有N个待检测的基因片段(序号分别是1,2…N),用字符串Ti(i=1,2…,N)表示(仅包含’A’、’C’、’G '、’T’四种字符,长度<1000)。请分别检测DNA序列S中是否存在这些基因片段,并按下面输出说明格式依次输出检测结果。输入说明:第一行是DNA序列...原创 2020-02-24 17:48:22 · 2952 阅读 · 1 评论 -
python 矩阵乘法(蓝桥杯)
题目要求:给定一个N阶矩阵A,输出A的M次幂(M是非负整数)输入格式第一行是一个正整数N、M(1<=N<=30, 0<=M<=5),表示矩阵A的阶数和要求的幂数接下来N行,每行N个绝对值不超过10的非负整数,描述矩阵A的值输出格式输出共N行,每行N个整数,表示A的M次幂所对应的矩阵。相邻的数之间用一个空格隔开样例输入2 21[0,0] 2[0,1] 1[0...原创 2020-02-28 14:39:34 · 1422 阅读 · 0 评论 -
python 十六进制转十进制(蓝桥杯)
题目要求:资源限制时间限制:1.0s 内存限制:512.0MB问题描述从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。样例输入FFFF样例输出65535代码图:代码如下:'''资源限制时间限制:1.0s 内存限制:512.0MB问题描述从键盘输入一个不...原创 2020-02-26 13:46:20 · 2146 阅读 · 0 评论 -
python 闰年判断(蓝桥杯)
题目要求:资源限制时间限制:1.0s 内存限制:256.0MB问题描述给定一个年份,判断这一年是不是闰年。当以下情况之一满足时,这一年是闰年:年份是4的倍数而不是100的倍数;年份是400的倍数。其他的年份都不是闰年。输入格式输入包含一个整数y,表示当前的年份。输出格式输出一行,如果给定的年份是闰年,则输出yes,否则输出no。说明:当试题指定你输出一个字符串作为结...原创 2020-02-27 12:36:57 · 1314 阅读 · 0 评论 -
python 字符串对比(蓝桥杯)
题目要求:给定两个仅由大写字母或小写字母组成的字符串(长度介于1到10之间),它们之间的关系是以下4中情况之一:1:两个字符串长度不等。2:两个字符串完全一致。3:两个字符串不区分大小写一致。4:两个字符串长度相等,但不区分大小写也不一致要求输出两字符串属于第几种关系输入格式:包括两行,每行都是一个字符串输出格式:仅有一个数字,表明这两个字符串的关系编号样例输入:BEIj...原创 2020-02-27 18:11:00 · 1100 阅读 · 1 评论 -
python 杨辉三角形(蓝桥杯)
题目要求:资源限制时间限制:1.0s 内存限制:256.0MB问题描述杨辉三角形又称Pascal三角形,它的第i+1行是(a+b)i的展开式的系数。 它的一个重要性质是:三角形中的每个数字等于它两肩上的数字相加。 下面给出了杨辉三角形的前4行: 1 1 1 1 2 1 1 3 3 1 给出n,输出它的前n行。输入格式输入包含一个数n。输出格式输出杨辉三...原创 2020-02-26 19:56:39 · 2390 阅读 · 0 评论 -
python 查找整数(蓝桥杯)
题目要求:资源限制时间限制:1.0s 内存限制:256.0MB问题描述给出一个包含n个整数的数列,问整数a在数列中的第一次出现是第几个。输入格式第一行包含一个整数n。第二行包含n个非负整数,为给定的数列,数列中的每个数都不大于10000。第三行包含一个整数a,为待查找的数。输出格式如果a在数列中出现了,输出它第一次出现的位置(位置从1开始编号),否则输出-1。样例输入6...原创 2020-02-27 12:21:59 · 1333 阅读 · 2 评论 -
python 01字串(蓝桥杯)
提示:代码中的三个函数为三种方法,都是已经测试的100分代码题目要求:资源限制时间限制:1.0s 内存限制:256.0MB问题描述对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能。它们的前几个是:0000000001000100001100100请按从小到大的顺序输出这32种01串。输入格式本试题没有输入。输出格式输出32行,按从小到大的顺序每...原创 2020-02-27 12:33:43 · 703 阅读 · 0 评论 -
python 时间转换(蓝桥杯)
题目要求:给定一个以秒为单位的数字(0~86399),输出时分秒,如下样例输入0样例输出0:0:0样例输入5436样例输出1:30:36代码图:代码如下:def main(): t=int(input())#输入时间(秒) H,M,S=0,0,0#初始化时分秒 H=t//(3600)#求小时 M=t%3600//60#求分 S=t%...原创 2020-02-27 18:03:03 · 1213 阅读 · 0 评论 -
python 特殊回文数(蓝桥杯)
题目要求:资源限制时间限制:1.0s 内存限制:512.0MB问题描述 123321是一个非常特殊的数,它从左边读和从右边读是一样的。 输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。输入格式 输入一行,包含一个正整数n。输出格式 按从小到大的顺序输出满足条件的整数,每个整数占一行。样例输入52样例输出8999989899...原创 2020-02-26 17:10:38 · 657 阅读 · 0 评论 -
python 数列特征(蓝桥杯)
题目要求:资源限制时间限制:1.0s 内存限制:256.0MB问题描述给出n个数,找出这n个数的最大值,最小值,和。输入格式第一行为整数n,表示数的个数。第二行有n个数,为给定的n个数,每个数的绝对值都小于10000。输出格式输出三行,每行一个整数。第一行表示这些数中的最大值,第二行表示这些数中的最小值,第三行表示这些数的和。样例输入51 3 -2 4 5样例输出...原创 2020-02-27 12:25:22 · 581 阅读 · 0 评论 -
python 分解质因数(蓝桥杯)
题目要求:要求:求出区间[a,b]中所有整数的质因数分解。样例输入3 10样例输出3=34=225=56=237=78=2229=3310=25代码图:这里为了思路清晰直接采用定义类方法来实现代码如下:class Fun(object): def __init__(self): self.lst1=[2]#存放素数 self...原创 2020-02-27 18:15:09 · 461 阅读 · 0 评论 -
python 十六进制转八进制(蓝桥杯)
小提示这是蓝桥杯默认输入的十六进制数再看他的要求,每个十六进制数长度不超过100000。也就是说按普通的思路来做,先转成十进制再转换成八进制会报错,但是这里直接采取格式话输出是成功的,可能是系统的Bug.题目要求:资源限制时间限制:1.0s 内存限制:512.0MB问题描述 给定n个十六进制正整数,输出它们对应的八进制数。输入格式 输入的第一行为一个正整数n (1&...原创 2020-02-25 20:38:12 · 3141 阅读 · 5 评论 -
python 十进制转十六进制(蓝桥杯)
题目要求:时间限制:1.0s 内存限制:512.0MB问题描述十六进制数是在程序设计时经常要使用到的一种整数的表示方式。它有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16个符号,分别表示十进制数的0至15。十六进制的计数方法是满16进1,所以十进制数16在十六进制中是10,而十进制的17在十六进制中是11,以此类推,十进制的30在十六进制中是1E。给出一个非...原创 2020-02-26 13:53:55 · 3989 阅读 · 11 评论 -
python 完美的代价(蓝桥杯)
题目要求:问题要求 回文串,是一种特殊的字符串,它从左往右读和从右往左读是一样的。小龙龙认为回文串才是完美的。现在给你一个串,它不一定是回文的,请你计算最少的交换次数使得该串变成一个完美的回文串。交换的定义是:交换两个相邻的字符 例如mamad 第一次交换 ad : mamda 第二次交换 md : madma 第三次交换 ma : madam (回文!完美!)输入格式...原创 2020-03-02 16:00:17 · 609 阅读 · 0 评论