
数据结构与算法
python数据结构与算法
Vagrant-z
Python
展开
-
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 · 190 阅读 · 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 · 2215 阅读 · 0 评论 -
python 闰年判断(蓝桥杯)
题目要求:资源限制时间限制:1.0s 内存限制:256.0MB问题描述给定一个年份,判断这一年是不是闰年。当以下情况之一满足时,这一年是闰年:年份是4的倍数而不是100的倍数;年份是400的倍数。其他的年份都不是闰年。输入格式输入包含一个整数y,表示当前的年份。输出格式输出一行,如果给定的年份是闰年,则输出yes,否则输出no。说明:当试题指定你输出一个字符串作为结...原创 2020-02-27 12:36:57 · 1399 阅读 · 0 评论 -
python JZ12 矩阵中的路径(剑指offer)
题目要求:思路:思路1:伪代码主函数(矩阵,路径) 如果矩阵为空(两种空情况): 直接返回False 否则: 遍历矩阵所有点(根据题意,每个点都有可能是起点) 如果是起点,调用查找函数(矩阵,已走路径列表,待查路径) #已走路径列表对应的点+待查路径 = 主函数传入路径() 如果查找函数返回为True: 直接退出循环,返回True 如果遍历结束,为得到True结果,矩阵不存在该路径,返回False查找函数(矩阵,已走路径列表,待查路径) 如原创 2021-11-21 16:33:27 · 663 阅读 · 0 评论 -
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 · 2457 阅读 · 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 · 1326 阅读 · 0 评论 -
python 序列求和(蓝桥杯)
题目要求:资源限制时间限制:1.0s 内存限制:256.0MB问题描述求1+2+3+…+n的值。输入格式输入包括一个整数n。输出格式输出一行,包括一个整数,表示1+2+3+…+n的值。样例输入4样例输出10样例输入100样例输出5050说明:有一些试题会给出多组样例输入输出以帮助你更好的做题。一般在提交之前所有这些样例都需要测试通过才行,但这不代表这几组样例...原创 2020-02-25 16:29:42 · 1250 阅读 · 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 · 540 阅读 · 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 · 411 阅读 · 0 评论 -
python 字母图形(蓝桥杯)
题目要求:资源限制时间限制:1.0s 内存限制:256.0MB问题描述利用字母可以组成一些美丽的图形,下面给出了一个例子:ABCDEFGBABCDEFCBABCDEDCBABCDEDCBABC这是一个5行7列的图形,请找出这个图形的规律,并输出一个n行m列的图形。输入格式输入一行,包含两个整数n和m,分别表示你要输出的图形的行数的列数。输出格式输出n行,每个m个字符...原创 2020-02-27 12:28:15 · 937 阅读 · 1 评论 -
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 · 379 阅读 · 0 评论 -
python JZ76 删除链表中重复的结点(剑指offer)
【代码】python JZ76 删除链表中重复的结点(剑指offer)原创 2024-02-27 10:46:31 · 233 阅读 · 0 评论 -
python JZ7 重建二叉树(剑指offer)
题目要求:思路:思路1:伪代码重构函数(前序遍历结果,中序遍历结果) 先判断前序遍历结果列表是否大于1: 根据前序遍历结果拿到当前树根节点TreeNode(pre[0]) 将当前树分为左右子树,然后获取左右子树的前序遍历结果,中序遍历结果 当前根结点的左子节点 = 重构函数(左子树前序遍历结果,左子树中序遍历结果) 当前根结点的右子节点 = 重构函数(右子树前序遍历结果,右子树中序遍历结果) 再判断前序遍历结果列表是否等于1: 说明该根节点无左右子树,直接返回根节点即可 否原创 2021-11-18 14:11:44 · 686 阅读 · 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 · 302 阅读 · 0 评论 -
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 · 1490 阅读 · 0 评论 -
python JZ10 斐波那契数列(剑指offer)
题目描述大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0,第1项是1)。n<=39示例1输入4返回值3Python3代码# -*- coding:utf-8 -*-class Solution: def Fibonacci(self, n): # write code here lst = [0,1,1,2,3] while len(lst)<n+1:原创 2021-11-14 18:10:22 · 505 阅读 · 0 评论 -
Python JZ29 顺时针打印矩阵(剑指offer)
题目描述输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.Python3 代码# -*- coding:utf-8 -*-class Solution: # matrix类型为二维列表,需要返回列表 def printMatrix(self, matrix):原创 2021-11-14 18:09:58 · 651 阅读 · 0 评论 -
Python3 JZ31 栈的压入、弹出序列(剑指offer)
题目描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)问题分析模拟入栈操作,循环pushV,对每个元素进行入栈操作,并进行判断设置popV的下标index对popV数组进行遍历,如果index能完整遍历整个数组,说明该数组即该栈的弹出序列判断当原创 2020-10-29 18:13:02 · 189 阅读 · 0 评论 -
python 最大最小公倍数(蓝桥杯)
题目要求:资源限制时间限制:1.0s 内存限制:256.0MB问题描述已知一个正整数N,问从1~N中任选出三个数,他们的最小公倍数最大可以为多少。输入格式输入一个正整数N。输出格式输出一个整数,表示你找到的最小公倍数。样例输入9样例输出504数据规模与约定1 <= N <= 1000000。代码图:代码如下:def main(): n=i...原创 2020-03-03 17:29:50 · 624 阅读 · 0 评论 -
Python3 JZ30 包含min函数的栈(剑指offer)
题目描述定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。Python3代码# -*- coding:utf-8 -*-class Solution: def __init__(self): self.stack = [] #栈 self.minstack = []#辅助栈 def push(self, node): self.stack.insert(0, node)#将数据入栈原创 2020-10-29 17:09:29 · 134 阅读 · 0 评论 -
python 特殊回文数(蓝桥杯)
题目要求:资源限制时间限制:1.0s 内存限制:512.0MB问题描述 123321是一个非常特殊的数,它从左边读和从右边读是一样的。 输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。输入格式 输入一行,包含一个正整数n。输出格式 按从小到大的顺序输出满足条件的整数,每个整数占一行。样例输入52样例输出8999989899...原创 2020-02-26 17:10:38 · 715 阅读 · 0 评论 -
python Fibonacci数列(蓝桥杯)
小提示:今天使用蓝桥杯系统时发现一个问题,同样的代码,封装和不封装在蓝桥杯评测系统运行时是不一样的,首先是不封装运行的数据如下:然后是封装后运行的数据如下:可以看到,虽然封装后的占用内存稍大于不封装的,但是封装后的运行速度明显比不封装的快题目要求:时间限制:1.0s 内存限制:256.0MB问题描述Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2...原创 2020-02-25 15:33:35 · 1279 阅读 · 1 评论 -
python 数列排序(蓝桥杯)
题目要求:资源限制时间限制:1.0s 内存限制:512.0MB问题描述 给定一个长度为n的数列,将这个数列按从小到大的顺序排列。1<=n<=200输入格式 第一行为一个整数n。 第二行包含n个整数,为待排序的数,每个整数的绝对值小于10000。输出格式 输出一行,按从小到大的顺序输出排序后的数列。样例输入58 3 6 4 9样例输出3 4 6 8...原创 2020-02-25 18:32:49 · 3035 阅读 · 5 评论 -
python 生产方案择优处理(蓝桥杯)
题目要求:某冶金工厂生产两类合金产品,分别为M1和M2。生产M1和M2时需要三种原材料(含某种原材料的需求量为0的情形)。现有一批这样的原材料即将过期,希望尽快用这些原材料生产M1和M2(每种原材料的数量均小于10000),请给出浪费原材料总量最少(即三种剩余原材料的数量和最小)的生产方案。如果方案不止一种,请输出M1生产量最少时所对应的方案。输入说明:第一行给出生产M1所需的三种原材...原创 2020-02-24 19:15:28 · 1394 阅读 · 10 评论 -
python JZ18 删除链表的节点(剑指offer)
思路1:常规遍历删除。原创 2024-02-27 10:58:38 · 288 阅读 · 0 评论 -
python JZ9 用两个栈实现队列(剑指offer)
题目描述用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。问题分析栈:后进先出,即数据插入和操作都在栈顶,最后插入的先被取出队列,先进先出,即排队,插入在队尾,取出在队首两个栈实现队列,即一个栈需要接受插入数据,另一个栈返回取出的数据如插入在栈一,则此时栈底即队首,取出操作时需要将栈反转,存到栈二,此时栈二栈顶即队尾如果栈二还有值进行反转,则数据混乱,由于栈只能后进先出的原因,故只能先将上次反转的数据全部取出,才能进行下一次去栈一取数据Python3源原创 2021-11-14 18:10:55 · 327 阅读 · 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 · 406 阅读 · 0 评论 -
python JZ24 反转链表(剑指offer)
思路1:使用列表,模拟入栈出栈操作进行重构列表。原创 2024-02-19 13:21:51 · 229 阅读 · 0 评论 -
python 数列特征(蓝桥杯)
题目要求:资源限制时间限制:1.0s 内存限制:256.0MB问题描述给出n个数,找出这n个数的最大值,最小值,和。输入格式第一行为整数n,表示数的个数。第二行有n个数,为给定的n个数,每个数的绝对值都小于10000。输出格式输出三行,每行一个整数。第一行表示这些数中的最大值,第二行表示这些数中的最小值,第三行表示这些数的和。样例输入51 3 -2 4 5样例输出...原创 2020-02-27 12:25:22 · 626 阅读 · 0 评论 -
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 · 4183 阅读 · 11 评论 -
python 十六进制转八进制(蓝桥杯)
小提示这是蓝桥杯默认输入的十六进制数再看他的要求,每个十六进制数长度不超过100000。也就是说按普通的思路来做,先转成十进制再转换成八进制会报错,但是这里直接采取格式话输出是成功的,可能是系统的Bug.题目要求:资源限制时间限制:1.0s 内存限制:512.0MB问题描述 给定n个十六进制正整数,输出它们对应的八进制数。输入格式 输入的第一行为一个正整数n (1&...原创 2020-02-25 20:38:12 · 3247 阅读 · 5 评论 -
python JZ8 二叉树的下一个结点(剑指offer)
题目要求:描述给定一个二叉树其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的next指针。下图为一棵有9个节点的二叉树。树中从父节点指向子节点的指针用实线表示,从子节点指向父节点的用虚线表示思路:思路1:递归(伪代码)获取下个节点函数(当前节点): 如果当前节点有右子节点: #中序遍历,说明左子树和本身已被遍历,接下来要先进行遍历右子树 递归右子节点 如果当前节点无右子节点,看本身有无next节点: #中序遍历,说原创 2021-11-20 19:37:26 · 1079 阅读 · 2 评论 -
python 完美的代价(蓝桥杯)
题目要求:问题要求 回文串,是一种特殊的字符串,它从左往右读和从右往左读是一样的。小龙龙认为回文串才是完美的。现在给你一个串,它不一定是回文的,请你计算最少的交换次数使得该串变成一个完美的回文串。交换的定义是:交换两个相邻的字符 例如mamad 第一次交换 ad : mamda 第二次交换 md : madma 第三次交换 ma : madam (回文!完美!)输入格式...原创 2020-03-02 16:00:17 · 670 阅读 · 0 评论 -
python JZ73 翻转单词序列(剑指offer)
思路1:使用列表和python内置方法。原创 2024-02-27 14:19:06 · 248 阅读 · 0 评论 -
python 矩形面积交(蓝桥杯)
题目要求:问题描述 平面上有两个矩形,它们的边平行于直角坐标系的X轴或Y轴。对于每个矩形,我们给出它的一对相对顶点的坐标,请你编程算出两个矩形的交的面积。输入格式 输入仅包含两行,每行描述一个矩形。 在每行中,给出矩形的一对相对顶点的坐标,每个点的坐标都用两个绝对值不超过10^7的实数表示。输出格式 输出仅包含一个实数,为交的面积,保留到小数后两位。样例输入1 1 3...原创 2020-02-28 20:35:49 · 1130 阅读 · 0 评论 -
python JZ52 两个链表的第一个公共结点(剑指offer)
思路3:双指针遍历(先走自己再走对方)思路1:常规遍历对比。原创 2024-02-21 14:47:36 · 253 阅读 · 0 评论 -
python 特殊的数字(蓝桥杯)
题目要求:时间限制:1.0s 内存限制:512.0MB问题描述 153是一个非常特殊的数,它等于它的每位数字的立方和,即153=111+555+333。编程求所有满足这种条件的三位十进制数。输出格式 按从小到大的顺序输出满足条件的三位十进制数,每个数占一行。代码图:代码如下:'''时间限制:1.0s 内存限制:512.0MB问题描述 153是一个非常特殊的数...原创 2020-02-26 19:52:52 · 664 阅读 · 0 评论 -
python 字符串合并(蓝桥杯)
题目要求:问题描述 输入两个字符串,将其合并为一个字符串后输出。输入格式 输入两个字符串输出格式 输出合并后的字符串样例输入一个满足题目要求的输入范例。HelloWorld样例输出HelloWorld数据规模和约定 输入的字符串长度0<n<100代码图:代码如下:''''''问题描述 输入两个字符串,将其合并为一个字符串后输出。输入...原创 2020-03-05 19:27:07 · 870 阅读 · 0 评论 -
python JZ35 复杂链表的复制(剑指offer)
思路1:引入dict。原创 2024-02-26 11:07:02 · 294 阅读 · 0 评论 -
python 求圆的面积(蓝桥杯)
题目要求:资源限制时间限制:1.0s 内存限制:256.0MB问题描述给定圆的半径r,求圆的面积。输入格式输入包含一个整数r,表示圆的半径。输出格式输出一行,包含一个实数,四舍五入保留小数点后7位,表示圆的面积。说明:在本题中,输入是一个整数,但是输出是一个实数。对于实数输出的问题,请一定看清楚实数输出的要求,比如本题中要求保留小数点后7位,则你的程序必须严格的输出7位小...原创 2020-02-25 16:26:06 · 4477 阅读 · 0 评论