算法
爱喝水的小鲨鱼
Python领域优质创作者,获的过蓝桥杯国赛二等奖,主要学习方向有Python、机器学习、数据挖掘、数据分析、网络爬虫
展开
-
码蹄集 ---- 供水管线 kruskal算法
文章讲解的是码蹄集中一道图相关的算法题供水管线,使用的算法是kruskal算法(克鲁斯卡尔算法) 这是一种非常常见的最小生成树算法。原创 2023-05-14 07:15:00 · 730 阅读 · 1 评论 -
LeetCode:寻找两个正序数组的中位数----多种解题方式
使用多种的经典的算法思想解决 LeetCode:寻找两个正序数组的中位数原创 2022-10-20 07:45:00 · 2335 阅读 · 106 评论 -
欧拉计划Problem 5 最小公倍数
最小公倍数 2520是最小的能够被1到10整除的数。最小的能够被1到20整除的正数是多少?原创 2022-07-16 22:00:24 · 685 阅读 · 1 评论 -
第十三届蓝桥杯Python B组国赛题解
第十三届蓝桥杯Python B组国赛题解,附带试题的PDF版本。文章包括每一道题的详细解析,自己的解题思路,代码实现,自己参加蓝桥杯的心得体会。题解是自己写的,对于题解我也没有使用大量的数据集去验证,可能会超时,也可能会报错,仅供参考。...............原创 2022-07-05 13:41:22 · 5202 阅读 · 19 评论 -
2020第十一届蓝桥杯省赛python真题详解
第十一届蓝桥杯省赛python试题A:门牌制作试题B:寻找2020试题C:跑步锻炼试题D:蛇形填数试题E: 排序试题F:成绩统计试题G:单词分析试题H:数字三角形试题I:平面切分试题J:装饰珠试题A:门牌制作s = 0for i in range(1,2021): s += str(i).count('2')print(s)# 624试题B:寻找2020nums = [[2, 2, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0],原创 2022-05-12 11:22:24 · 5457 阅读 · 0 评论 -
第十三届蓝桥杯Python 大学B组真题详解
第十三届蓝桥杯Python B组真题详解,题解分析,思路清晰,代码易懂原创 2022-05-08 23:52:57 · 16486 阅读 · 11 评论 -
python 高效求解质数-- 埃氏筛法
用埃氏筛求解质数,这样的效率比较高,求1亿以内的质数大概需要使用3分钟左右,质数的定义:在大于 1 的自然数中,除了 1 和它本身以外不再有其他因数的自然数。因此对于每个数 x,我们可以从小到大枚举 [2,x−1] 中的每个数 y,判断 y 是否为 xx 的因数。...原创 2022-04-06 22:31:13 · 4606 阅读 · 2 评论 -
蓝桥杯 -- 跑步锻炼
【问题描述】小蓝每天都锻炼身体。正常情况下,小蓝每天跑 1 千米。如果某天是周一或者月初(1 日),为了激励自己,小蓝要跑 2 千米。如果同时是周一或月初,小蓝也是跑 2 千米。小蓝跑步已经坚持了很长时间,从 2000 年 1 月 1 日周六(含)到 2020 年10 月 1 日周四(含)。请问这段时间小蓝总共跑步多少千米?import datetimea = datetime.date(2000,1,1)b = datetime.date(2020,10,2)# print(a.day)#.原创 2022-04-05 17:51:33 · 1043 阅读 · 0 评论 -
蓝桥杯--关联矩阵
试题 算法训练 关联矩阵资源限制时间限制:1.0s 内存限制:512.0MB问题描述 有一个n个结点m条边的有向图,请输出他的关联矩阵。输入格式 第一行两个整数n、m,表示图中结点和边的数目。n<=100,m<=1000。 接下来m行,每行两个整数a、b,表示图中有(a,b)边。 注意图中可能含有重边,但不会有自环。输出格式 输出该图的关联矩阵,注意请勿改变边和结点的顺序。样例输入5 91 23 11 52 52 32 33 24 35 4原创 2022-01-21 21:03:00 · 210 阅读 · 0 评论 -
力扣 整数反转
给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回0。假设环境不允许存储 64 位整数(有符号或无符号)。 def reverse(self, x: int) -> int: if x >= 0: x = str(x)[::-1] x = int(x) if x > (2 ** 31原创 2021-12-02 18:22:19 · 146 阅读 · 0 评论 -
爬楼梯 -- 斐波那契数列,尾递归
爬楼梯假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?def weiT(n,a=1,b=2,c=3): if n==1: return 1 elif n==2: return 2 else: if n==c: return a+b else: return weiT(n,a=b,b=a+b,c=.原创 2021-11-18 16:15:59 · 1480 阅读 · 0 评论 -
找出数组中重复的数字
随机生成一个长度为n的数组nums,数组 nums 里的所有数字都在 0~n-2 的范围内找出数组中其中一个重复的数字,并统计次数n 的范围:2~100import randomn = random.randint(2, 100)nums = []for i in range(0, n): j = random.randint(0, n-2) nums.append(j)print(nums)while True: a = len(nums)原创 2020-12-05 20:56:54 · 158 阅读 · 0 评论 -
用位运算解题
1-1000这1000个数放在含有1001个元素的数组中,只有唯一个元素重复,其他均只出现一次。每个数组元素,只能访问一次,设计一个算法,将其找出来,不用辅助储存空间,能否设计一个算发实现位运算解题import randoma = []n = 1001for i in range(n-1): a.append(i+1)print(a)b = random.randint(0,n-2)a.insert(a[b],random.randint(1,n-1))print(a)x.原创 2021-01-21 19:41:42 · 232 阅读 · 0 评论 -
蓝桥杯2019 数的分解
把 2019 分解成 3 个各不相同的正整数之和,并且要求每个正整数都不包含数字 2 和 4,一共有多少种不同的分解方法?注意交换 3 个整数的顺序被视为同一种方法,例如 1000+1001+18 和1001+1000+18 被视为同一种。1、三个数不能相同,2、三个数中最大的数为20163、不能出现复数sum1 = 0# 生成第一个数for i in range(1, 2017): a = str(i) if '2' in a or '4' in a: .原创 2021-04-16 21:00:13 · 322 阅读 · 0 评论 -
python九种排序代码实现
用python实现常见的九种排序冒泡排序,选择排序,插入排序,快速排序,堆排序,归并排序,尔排序,计数排序,基数排序,原创 2021-07-11 21:52:41 · 1540 阅读 · 0 评论 -
python实现希尔排序
# 希尔排序基于插入排序def insert_sort_gap_(li,gap): for i in range(gap,len(li)): # i 代表摸到的牌的下标 tmp = li[i] j = i-gap # j指的是手中的牌的下标 while j >= 0 and li[j] > tmp: li[j+gap] = li[j] # 将大的数放到后面 j原创 2021-09-26 21:18:47 · 164 阅读 · 0 评论 -
旋转数组的最小数字、二叉搜索树节点最小距离
剑指 Offer 11. 旋转数组的最小数字 def minArray(self, numbers: List[int]) -> int: num1 = numbers[0] num2 = numbers[0] for i in range(len(numbers)-1): if numbers[i] > numbers[i+1]: num2 = numbers[i+1] .原创 2021-08-08 10:29:58 · 128 阅读 · 0 评论 -
python实现快速排序
# 快速排序# 将元素放到自己应有的位置,左边的数都比它小,右边的数都比它大# 递归完成''' 时间复杂度,O(n*log(n)) (一般情况) 快速排序的问题 最坏情况 排一个倒叙的列表 解决方法,在列表中随机找一个数与第一个数进行交换 递归 容易超过递归的最大深度'''import random# import sys# sys.setrecursionlimit(10000) 该表最大递归深度''' 快速排序原创 2021-06-05 20:26:01 · 205 阅读 · 0 评论 -
冒泡排序,选择排序,插入排序
冒泡排序时间复杂度 O(n2)# 冒泡排序# 列表每相邻的数,如果前面比后面大,则交换这两个数# 一趟排序完成后,则无序区减少一个数,有序增加一个数import randomdef bubble_sort(li): for i in range(len(li)-1): for j in range(len(li)-i-1): if li[j] > li[j+1]: li[j], li[j+1] = .原创 2021-05-29 11:48:42 · 152 阅读 · 3 评论 -
迪杰斯特拉算法
def myDijkstra(statr:int , lst:list): """ :param statr: 开始的地点 :param lst: 各个城市之间的距离, 二维数组,就是用行列坐标表示图形上两点之间的距离。 :return: 到各个城市的最短距离 """ # city 未被当作中间节点的城市列表 city = [x for x in range(len(lst)) if x != statr] # 城市顺序 cit原创 2021-04-25 12:41:12 · 643 阅读 · 1 评论
分享