自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(55)
  • 资源 (1)
  • 问答 (7)
  • 收藏
  • 关注

原创 Python基于time库对时间分钟等级进行运算

使用python基于time库对时间进行转化,并对分钟等级的时间进行相加

2022-08-24 20:01:22 1149 1

原创 蓝桥杯:卡片换位(BFS)Python实现

题目描述这题应该是一个经典的BFS,一开始根本没有思路,看了题解,发现大佬们做的时候都是以“空格”为移动对象,于是我也这么做定眼一看,二维数组嘛~但是跟着大佬走学了新的一招,将一维数组转成二维数组,将二维数组转成一维数组一维转二维:xn = index//3,yn = index%3二维转一维:index = xn * 3 + yn步数怎么记录呢?用一个字典吧,每次走一步都在上一步加一,key就是“状态”PS:这个题有地方很怪,至少我是看了案例才知道的,有一个案例是根本没有空格这个元素的,所以

2022-03-31 19:55:30 1305 1

原创 Python蓝桥31天,第十二天

1. 打水问题题目描述思路提示就是思路代码n, m = map(int, input().split())t = list(map(int, input().split()))t.sort()loading = [0 for _ in range(len(t))] # 某个人的排队时间等于前一个人的排队时间加上打水时间for i in range(m, n): loading[i] = loading[i - m] + t[i - m]water = [0 for i in

2022-03-19 16:20:01 838

原创 Python蓝桥31天,第十一天

1. 天干地支题目描述思路学习了学习了因为每60年一轮,那干脆就弄个长度为60的list,需要年份取余就好啦于是乎,现在的问题就变成了=》如何填这长度为60的list呢根据题意一个for循环搞定代码note = []sky = ['jia', 'yi', 'bing', 'ding', 'wu', 'ji', 'geng', 'xin', 'ren', 'gui']land = ['zi', 'chou', 'yin', 'mao', 'chen', 'si', 'wu', 'wei'

2022-03-18 22:41:23 1908

原创 Python蓝桥31天,第九天

1. 最大乘积题目描述思路方法超时,但是好像有个什么唯一结果的什么算法,不是很清楚,但是暴力也能做,用permutations将所有的1-9排列组合,然后从中间插*看看一个个看结果代码import itertoolsMax = 0lis = [1, 2, 3, 4, 5, 6, 7, 8, 9]for stnum in itertools.permutations(lis, 9): number = "".join(list(map(str, stnum))) for i

2022-03-16 17:22:22 1639

原创 Python蓝桥31天,第七天

1. 相乘题目描述思路由:**a/b = c……d 得,(a-d)/b = c,又得到 (c*b) + d = a超时也能做,大概四五秒?代码# 超时# for i in range(1000000000):# if (i*2021-999999999)%1000000007==0:# print(i)# breakfor j in range(1,1000000): if (j*1000000007+999999999)%2021=

2022-03-14 14:40:14 957

原创 Python蓝桥31天,第六天

1. 巧排扑克牌题目描述思路本质就是约瑟夫循环,就是初始位置为1(root)步长为2的约瑟夫循环代码class Node: def __init__(self, index, value=None, next=None): self.index = index self.value = value self.next = nextdef creatLink(n=13): root = Node(1) temp = ro

2022-03-13 16:49:36 1735 2

原创 Python蓝桥31天,第五天

1. 猴子分香蕉题目描述解析16个香蕉的话在第四个的时候正好分完了,一个不留,所以从21开始跨度为五的遍历-暴力代码flag = Falsefor N in range(21,10000,5): temp = N for i in range(1,5): if N % 5 == i: N = N - N//5 -i flag = True else: flag = False

2022-03-12 16:05:12 2487 1

原创 Python蓝桥31天,第四天

1. 奇数倍数题目描述解析直接看代码代码n = 2while True: X = 2019 X *= n n += 1 lis = list(set(str(X))) flag = True for i in lis: if int(i) % 2 == 0: flag = False break if flag: print(X) break

2022-03-11 20:28:47 614 1

原创 Python蓝桥31天,第三天

1. 排他平方数题目描述解析:一开始真没读懂这个题,读了好几遍终于明白了其实就是让你求2014年减去n年后,那一年的年份各个数字之和等于n代码count = []for i in range(1900,2014): if 2014 - i == sum([int(m) for m in list(str(i))]): count.append(i)print(min(count)) # 输出的小明的2.纸牌三角形题目描述解析:将所有有可能的排序方式全部找

2022-03-10 21:05:41 9135 1

原创 Python蓝桥31天,第二天

1. 排他平方数题目描述解析:用python的内置函数就能解决主要是两个要求六位整数平方后的数的各个数字和原数按位数取交集为空集代码for i in range(203880,1000000): if len(list(set(str(i)))) == 6: if not set(str(i)).intersection(set(str(i * i))): print(i)2. 买不到的数目题目描述解析主要的步骤有两个确

2022-03-09 19:20:36 499

原创 Python制作WordCloud词云

可以试试用这个来当作词云的形状import jiebafrom wordcloud import WordCloudimport matplotlib.pyplot as pltfrom PIL import Imageimport numpy as npimport pandas as pd# 导入文本数据进行简单的文本处理# pandas读取csv文件这里出了点小意外,反正原理都是将要制成词云的数据放在数组或者list或者随便一个可以遍历的里面,然后字符串拼接起来,比如我的text就

2022-03-03 21:01:11 902

原创 Python爬取某宝宝商品评论等数据

提前准备参数import reimport requestsimport randomimport timeimport pandas as pddf = []# 这里的信息要从list_detial里找,上面的截图就是headers = { 'cookie': '', 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome

2022-03-03 20:53:35 576

原创 pandas读取txt文件存储为csv时段落自动换行

python 用 pandas 将readlines读取来的txt文件转存到csv文件中出现换行问题对比(左边和右边两列)代码修改如下:import osimport pandas as pdimport numpy as npos.chdir('E:\Project\实测\批量测试')diclist = []with open('HaveClear.txt',encoding='utf-8') as hf: for line in hf.readlines():

2021-12-20 18:36:05 1969

原创 韩顺平 数据结构与算法 (算法_3)动态规划算法

动态规划算法1. 介绍动态规划(Dynamic Programming)算法的核心思想是:将大问题划分为小问题进行解决,从而一步步获取最优解的处理算法动态规划算法与分治算法类似,其基本思想都是“分而治之”,先求解子问题,然后将这些子问题的解合并变成原问题的解与分治算法不同的是:适合用于动态规划求解的问题,经分解得到子问题往往不是相互独立的。(即下一个子阶段的求解是建立在上一个子阶段的解的基础上,进行进一步的求解)动态规划可以通过填表的方式来逐步推进,得到最优解。2. 动态规划算法实践—背包问

2021-11-01 20:48:21 161

原创 韩顺平 数据结构与算法 (算法_2)分治算法

分治算法1. 介绍分治法就是“分而治之”,就是把一个复杂的问题分成两个或者更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单直接求解,原问题的子问题的解的合并就是原问题的解;分而治之是一些高效算法的基础,如排序算法(快排,归并),傅里叶变换(快速傅里叶变换)…分治算法可以求解一些经典的问题二分搜索大整数乘法棋牌覆盖合并排序快速排序线性时间选择最接近点对问题循环赛日程表汉诺塔2. 基本步骤​ 分治法在每一层递归上都有三个步骤:1. 分解:将

2021-11-01 20:47:16 118

原创 韩顺平 数据结构与算法 (算法_1) 二分查找算法(非递归)

1 二分查找算法(非递归)介绍前面使用的二分查找是递归的方法,现在使用的是非递归的方法,现在要求是全部掌握二分查找只适合从有序的数列中进行查找(比如数字和字母),将数列排序后查找二分查找的时间复杂度O(log_2n),即查找目标位置最多要log_2n步。假设从[0,99]的队列(n=100)中寻找30,则需要查找的步数为log_2 100,即最多需要查找7次(26<100<27)代码实现package Algorithm.binarysearchNorecursion;pub

2021-11-01 20:46:30 147

原创 韩顺平 数据结构与算法 (16) 图

图为什么要有图?我们有线性表和树线性表局限于一个直接前驱和一个直接后继的关系树也只能有一个直接前驱也就是父节点当我们需要表示多对多的关系时,这里我们就用到了图1)基本介绍图是一种数据结构,其中节点可以具有零个或者多个相邻元素。两个节点之间的连接称为边。节点也可以称为顶点。2)常用概念顶点(vertex)边(edge)路径(例如:D->A->B->C ; D->B->C)无向图(顶点之间的连接没有方向)有向图(顶点之间的连接有方向)带

2021-11-01 20:45:15 131

原创 韩顺平 数据结构与算法 (15) 多路查找树

多路查找树1) 二叉树和B树二叉树分析:二叉树的操作效率较高,但也存在问题。 多叉树: 2)2-3树1、基本介绍2-3树是最简单是树结构,具有如下特点2-3树的所有叶子节点都在同一层。(只要是B树都满足这个条件)有两个子节点的节点交二节点,二节点要么没有子节点,要么有两个子节点有三个子节点的节点叫三节点,三节点要么没有子节点,要么有三个子节点2-3树是由二节点和三节点构成的树2、树应用案例将数列{16, 24, 12, 32, 14, 26, 34, 10, 8, 28, 38

2021-11-01 20:42:34 149

原创 韩顺平 数据结构与算法 (14) 平衡二叉树(AVL树)

平衡二叉树(AVL树)1)介绍案例分析:给一个数列{1, 2, 3, 4, 5, 6},要求创建一颗二叉排序树(BST),存在一些问题:基本介绍:平衡二叉树也叫平衡二叉搜索树(Self-balancing binary search tree)又被称为AVL树,可以保证查询效率为较高水平具有以下特点:它是一颗空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一颗平衡二叉树。平衡二叉树的常用实现方法有红黑树、AVL(算法)、替罪羊树、Treap、伸展树 等。

2021-10-28 22:28:49 253

原创 韩顺平 数据结构与算法 (13) 二叉排序树(BST)

二叉排序树(BST)需求:{给你一个数列[7, 3, 10, 12, 5, 1, 9],要求能够高效的完成对数据的查询和添加}解决方案分析:使用数组数组未排序时:可以直接在数组尾部添加,速度快,缺点:查找速度慢数组排序时:可以二分查找,查找速度快,缺点:为了保证数据的有序,在添加新数据时,找到插入位置后,后面的数据需要整体移动,速度慢使用链式存储-链表不管链表是否有序,查找速度都慢,添加数据速度比数组快,不需要数据整体移动。使用二叉排序树可以使插入检索等方式速度变快

2021-10-28 22:26:46 184

原创 韩顺平 数据结构与算法 (12_7) 树结构应用部分_赫夫曼编码实践——文件压缩

赫夫曼编码实践——文件压缩要求:将一个图片进行无损压缩思路:读取文件->得到赫夫曼编码表->完成压缩代码实现(以上面代码为基础)package DataStructures.huffmanTree;import java.io.*;import java.util.*;public class FileCodeAndDecode { public static void main(String[] args) {// //测试压缩文件//

2021-10-28 22:24:40 106

原创 韩顺平 数据结构与算法 (12_6) 树结构应用部分_赫夫曼编码实践——数据解码

赫夫曼编码实践——数据解码代码实现(承袭压缩的代码)package DataStructures.huffmanTree;import javax.print.DocFlavor;import java.util.*;public class HuffmanCode { public static void main(String[] args) { String content = "i like like like java do you like a java";

2021-10-28 22:23:59 148

原创 韩顺平 数据结构与算法 (12_5) 树结构应用部分_赫夫曼编码实践——数据压缩

赫夫曼编码实践——数据压缩代码实现(承袭编码的代码)package DataStructures.huffmanTree;import java.util.*;public class HuffmanCode { public static void main(String[] args) { String content = "i like like like java do you like a java"; byte contentBytes[] =

2021-10-28 22:23:21 115

原创 韩顺平 数据结构与算法 (12_4) 赫夫曼编码(代码)

实际案例——数据压缩目标:将给出的一段文本,比如"ilikelikelikejavadoyoulikeajava",根据前面的的赫夫曼编码原理,对其进行数据压缩处理步骤1:根据赫夫曼编码压缩数据的原理,需要创建"i like like like java do you like a java"对应的赫夫曼树.思路:前面已经分析过了,而且我们已然讲过了构建赫夫曼树的具体实现(创建赫夫曼树->给各个字符编码->规定向左为0向右为1得到每个字符的编码)。功能: 根据赫夫曼编码

2021-10-28 22:22:29 270

原创 韩顺平 数据结构与算法 (12_3) 树结构应用部分_赫夫曼编码(思路)

赫夫曼编码(思路)1.基本介绍赫夫曼编码也翻译为哈夫曼编码(Huffman Coding),又称赫夫曼编码,赫夫曼编码是赫哈夫曼树在电讯通信中的经典的应用之一赫夫曼编码广泛的用于数据文件压缩与解压。其**压缩率通常在20%~90%**之间赫夫曼码是可变字长编码(VLC)的一种,Huffman于1952年提出一种编码方法,称之为最佳编码2.赫夫曼编码图解与分析通信领域中信息的处理方式1-定长编码:根据对应字符的Ascii编码对应的二进制来表示(长度很长)通信领域中信息的处理方式2

2021-10-28 22:21:31 243

原创 韩顺平 数据结构与算法 (12_2) 树结构应用部分_赫夫曼树

赫夫曼树1.基本介绍给定n个权值作为n个叶子节点,构造一颗二叉树,若该树的带权路径长度(wpl)达到最小,称这样的二叉树为最优二叉树,也称哈夫曼树(或赫夫曼树)赫夫曼树是带权路径长度最短的树,权值较大的节点离根较劲2.重要概念**路径:**在一颗树中,从一个节点往下可以达到的孩子或者孙子节点之间的通路,称为路径**路径长度:**通路中分支的数目称为路径长度。若规定根节点的层数为1,则从根节点到第L层节点的路径长度为L-1**节点的权:**若树中节点赋给一个有着某种含义的数值,这个数值称为

2021-10-24 16:51:21 728

原创 韩顺平 数据结构与算法 (12_1) 树结构应用部分_堆排序

树结构应用部分1)堆排序1.基础介绍堆排序是利用堆这种数据结构而设置的一种排序算法,堆排序是一种选择排序,他的最坏最好平均时间复杂度均为O(nlogn),他也是不稳定排序堆是具有一下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆。**注意:**没有要求节点的左孩子的值和右孩子的的大小关系每个结点的值都小于或等于左右孩子节点的值,称为小顶堆图示-大顶堆图示小顶堆2.基本思想(大顶堆)将待排序的序列构造成一个大顶堆;此时,整个序列的最大值就是堆顶(r

2021-10-24 16:45:46 851

原创 韩顺平 数据结构与算法 (11_3) 树结构基础部分_线索化二叉树

线索化二叉树1.引出:Ps:中序遍历应该是{8,3,10,1,14,6}2.基本介绍注释:​ 1) 例如二叉链表中的8节点,指向3或者1或者6…都是在该节点下的指针,也就是线索​ 2)按照前序遍历方式加指针叫前序线索二叉树,同理中序线索二叉树、后序线索二叉树​ 3)比如在{8,3,10,1,14,6}中,3的前驱是8,8没有前驱​ 4)比如在{8,3,10,1,14,6}中,14的后继是6,6没有后继3. 【建立】线索化二叉树案例建立线索化二叉树思路分析4.【遍历】线索化二叉

2021-10-24 16:44:37 970

原创 韩顺平 数据结构与算法 (11_2) 树结构基础部分_顺序存储二叉树

顺序存储二叉树1.基本说明从数据存储来看,数组存储方式和树的存储方式可以相互转换,即数组可以转换成树,树也可以转换成数组2.要求:二叉树的节点,要求以数组的方式来存放要求遍历数组arr时,仍然可以以前序遍历、中序遍历和后序遍历的方式完成节点的遍历3. 特点:顺序二叉树通常只考虑完全二叉树第n个元素的左子节点为2*n+1第n个元素的右子节点为2*n+2第n个元素的父节点为(n-1)/2Ps:n 表示二叉树中的第几个元素(root从0开始编号)4.顺序存储二叉树遍历**需求:

2021-10-24 16:43:04 74

原创 韩顺平 数据结构与算法 (11_1) 树结构基础部分_二叉树

3)二叉树1. 二叉树的概念树有很多种,每个节点最多只有两个子节点的形式就是二叉树二叉树的子节点分为左节点和右节点如果该二叉树的所有叶子节点都在最后一层并且结点总数=2^n-1(n为层数)我们称为满二叉树如果该二叉树的所有叶子节点都在最后一层或者倒数第二层,而且最后一层的叶子节点在左边连续,倒数第二层的叶子节点在右边连续,我们称之为完全二叉树PS:连续是横向连续不是纵向连续(比如81->91左连续;71->61->15右连续)2. 二叉树遍历说明前序

2021-10-24 16:42:10 847

原创 韩顺平 数据结构与算法 (11_0) 树结构基础部分

11 树结构基础部分1)引言:为什么需要这树这种结构?​ 当我们存储数据的时候,会使用数组或者链表的方式存储针对数组存储:**优点:**通过下标的方式访问元素,速度快,对有序数组,还可以使用二分查找提高检索速度。缺点:如果要检索具体某个值,或者插入值(按照一定顺序)会整体移动,效率低针对链式存储:**优点:**在一定程度上对数组存储方式有优化(比如:插入一个数值节点,只需要将待插入节点链接到链表中即可,删除效率也很高)**缺点:**在进行检索时,效率仍然较低(比如:检索某个值,需要从

2021-10-24 16:39:58 993

原创 韩顺平 数据结构与算法 (10)哈希表

10 哈希表(Hashtable)引入:​ 有一个公司,当有新的员工来报道时,要求将该员工的信息加入(id,性别,年龄,住址…),当输入该员工的id时,要求查找到该员工的所有信息。要求:不适用数据结构,尽量节省内存,速度越快越好=>哈希表(散列)1)基础介绍​ 哈希表(又叫散列表),是根据关键码值(key value)而直接进行访问的数据结构。​ 也就是说,它通过关键码直接映射到表中的位置来访问,以加快查找速度​ 这个映射函数叫做散列函数,存放记录的数组叫散列表2)哈希表实际应用场景

2021-10-24 16:38:24 204

原创 韩顺平 数据结构与算法 (9_4)查找算法_斐波那契查找

斐波那契查找(黄金分割法)基本介绍:黄金分割点是指把一条线段分割成两部分,使其中一部分与全长之比等于另一部分与这部分之比斐波那契数列{1, 1, 2, 3, 5, 8, 13, 21, 34, 55}:前两个数为1,后面的数是前面两个数的和。发现斐波那契数列的两个相邻数的比例,无限接近黄金分隔值0.618,比如21/34,34/55,十分接近0.618.查找原理原理与前两种(二分、插值)相似,**仅仅只是改变了中间节点mid的位置,**mid不是中间或者插入得到,二十位于黄金分割点附

2021-10-19 20:29:52 196

原创 韩顺平 数据结构与算法 (9_3)查找算法_插值查找

插值查找基础介绍插值查找算法类似于二分查找不同的是插值查找每次从自适应mid处开始查找例如:我们要从{1,8,10,89,1000,1234}找到1这个数,我们就会从前开始找int mid = left +(right-left)*(findVal-arr[left])/(arr[right]-arr[left])/插值索引/注意:对于数据量较大,关键字分布比较均匀的查找表来说,采用插值查找,速度较快关键字分布不均匀的情况下 ,该方法不一定比折半查找要好插

2021-10-19 20:28:40 79

原创 韩顺平 数据结构与算法 (9_2)查找算法_二分查找

二分查找基本介绍二分查找要求是查询一个有序数组分递归和非递归查找查找思路首先确定数组中间的下标mid = (left+right)/2然后让需要查找的数findVal和arr[mid]比较if(findVal>arr[mid]){说明,要查找的数在mid的右边,因此需要向右递归查找}if(findVal<arr[mid]){说明,要查找的数在mid的左边,因此需要向左递归查找}if(findVal=arr[mid]){说明,要查找的数就是mid}结束递归的条

2021-10-19 20:27:38 82

原创 韩顺平 数据结构与算法 (9_1)查找算法_线性查找

线性查找基本介绍有一组数列:{1,8,10,86,1000,1234},判断数列中是否包含此名称【顺序查找】要求:如果找到了,就提示找到,并给出下标值代码演示——非常简单,过一下就可package DataStructures.Search;public class SeqSearch { public static void main(String[] args) { int arr[] = {1, 9, 11, -1, 34, 89};

2021-10-19 20:27:03 53

原创 韩顺平 数据结构与算法 (8_7)排序算法_基数排序

基数排序(radix sort)基本介绍基数排序属于分配式排序,又称“桶子法“,他是通过键值的各个位的值,将要排序的元素分配至某些”桶“中,达到排序的作用基数排序式属于稳定性的排序,基数排序法是效率高的稳定的排序基数排序时经典的空间换时间的方式,占用内存很大,对海量数据排序时,容易造成OutofMemoryError基数排序是桶排序的拓展实现:将整数按位数切割成不同的数字。然后按每个位数分别比较基本思想将所有待比较的数值统一为同样的数位长度:数位较短的数前面补零。然后,从最低位开

2021-10-19 20:25:30 107

原创 韩顺平 数据结构与算法 (8_6)排序算法_归并排序

归并排序(MergeSort)基本介绍:是利用归并的思想实现的排序方法,该算法采用经典的分治策略(先分再治)归并排序示意图代码实现——时间复杂度(1s_8百万)package DataStructures.Sort;import java.util.Arrays;public class MergeSort { public static void main(String[] args) { int arr[] = {8, 4, 7, 5, 1

2021-10-19 20:24:22 131

原创 韩顺平 数据结构与算法 (8_5)排序算法_快速排序

快速排序(Quicksort)基础介绍快速排序是对冒泡排序的一种改进。基本思想通过一趟排序,将要排序的数据分割成独立的两部分,其中一部分的所有数据都要比另一部分的所有数据要小,然后按此方法对这两部数据分别进行快速排序,整个排序过程可以递归进行,于此达到整个数据变成有序序列快排示意图代码演示——递归(1s_8百万)特点:单while含双whilepackage DataStructures.Sort;import java.text.SimpleDateFormat

2021-10-19 20:23:07 302

Python数据清洗之Pandas与Numpy常用方法

适用刚开始学习数据清洗的人学习 适用有数据清洗基础,但是没有完整框概的人使用 里面包含了主流的常规用法

2022-10-28

韩顺平老师尚硅谷Java数据结构与算法194集笔记

这是我从B站上看韩老师讲的数据结构与算法后整理的笔记 代码经过运行,欢迎批评指正 有些地方我感觉还是挺难的 大都经过我自己的语言进行描述,韩老师中期的表达可能或多或少也影响可阅读性,望先生们见谅

2021-10-12

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除