自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

筱羊冰冰

每天都向自己的梦想迈进

  • 博客(161)
  • 收藏
  • 关注

原创 1305. 两棵二叉搜索树中的所有元素(直接归并两棵树,py版本)

leetcode1305两棵二叉搜索树的所有元素

2022-06-04 15:05:13 368 1

原创 leetcode450——二叉搜索树删除(py版本)

leetcode450-二叉搜索树删除问题(py,递归+迭代)

2022-06-04 11:05:38 378

原创 开水团2023届实习笔试

开水团2023届实习笔试,python解法

2022-04-11 14:08:44 3250 1

原创 平安科技性格测试凉经

平安科技性格测试,没错我挂了

2022-04-07 17:19:04 1345

原创 python:Python was not found; run without arguments to install from the Microsoft Store, or disable t

今天在cmd运行python突然出了问题,以为是前两天重装了系统,导致环境变量出了问题,但是怎么改都不行,而且他的提示也和之前的不太一样:Python was not found; run without arguments to install from the Microsoft Store, or disable this shortcut from Settings > Manage App Execution Aliases.去ms商店下载是不可能下载的了,这辈子都不可能。查了一圈

2021-10-28 17:42:11 1174

原创 python collections.deque类的extendleft小坑

from collections import dequefrom icecream import ica = deque()ic(a)a.extend([1, 2, 3, 4])ic(a)a.extendleft([-4, -3 ,-2, -1])ic(a)我们看一下结果这里就有一个坑,他extend添加在尾端的顺序和我传入的顺序是相同的,但是我们extendleft在首段添加,可以看到实际顺序和我传入的顺序相反。看了一下官网,好叭还真有说明:看了一下stackoverflow

2021-10-19 14:46:41 394

原创 leetcode——下一个最大元素(单调栈)

相关题目下一个最大元素1下一个最大元素2下一个最大元素3其中前两个题目是关于单调栈的,第三个题目因为是在一起,就一起拿出来了单调栈指栈内元素单调排序,比如[5,3,2,1],这里以单调递减为例。当我们碰到一个大于栈顶元素的值,需要不断弹出栈顶元素,直到栈空或者是栈顶元素大于等于当前元素。下一个最大元素1让你在一个超集里面找下一个最大元素,然后匹配到另一个集合,一看就是字典了。那么怎么找下一个最大元素呢?我们想这样一个问题,那就是排队,你站在人群中,是这样的:无非就是找你能看到的前面

2021-09-19 17:18:36 295

原创 leetcode——数组峰值问题+二分法实现总结

相关题目山脉数组寻找峰值二分法二分法这东西,就是一就会,一写就废,那么我们就来总结一下吧。前提:有序数组查询一个点(假设我们要查找的数据只出现一次)leetcode:704先left, right = 0, len(nums)-1都不用说了吧,将两个指针放在数组的首尾,然后每一次计算mid,并根据mid的值,来判断我们的目标点的位置。我们先假设一下,如果是升序数组,我们的mid比目标要小,那么目标一定在mid的右边,此时数组已经分成了[0, mid-1]和[mid+1, len(nums

2021-09-19 16:01:48 304

原创 leetcode:600. 不含连续1的非负整数

题目解析传入一个数据n,要我们找出[0, n]范围内所有转换成的二进制中没有连续1的字符串的数的总数。(好家伙,翻译得比原题还不说人话)比如我传入一个5,从0到5我们写出所有的二进制:0、1、10、11、100、101其中11是有联系的1,我们不要,剩下的五个数都是符合范围的。看数据的范围,直接10* *9,根本不可能去遍历,转二进制然后找,所以我们要总结一些规律,这里我想到的是按照位数。1位数:0、1;2位数:10、11(这个不要);3位数:100、101;四位数:1000、1001、

2021-09-12 15:13:41 209

原创 py脚本检索指定文件并发送邮件+脚本打包、伪装

起因先说一下我在干什么,之前有一个朋友,他们的网安老师提出了一个挑战,就是如果能在交作业的时候把他电脑上的考试卷拿到,那么考试直接满分,老师已经展示了考卷的位置,以及自己的电脑系统。那么就来试一下,首先我的想法是将图片和exe一起发给老师,然后同时运行,在指定位置搜索考试卷(word文档),然后用email库发邮件。这篇博客应该会比较全,想法是把整个流程都搬一遍,如果实现上有问题我会补充。说干就干首先是脚本的准备,要有两个功能,一个是在搜索(其实是可以直接使用指定位置的,但是说不好会换呢),另一个

2021-09-09 10:13:25 530

原创 leetcode——2-4数之和

相关习题两数之和三数之和统计特殊四元组四数之和两数之和(着重哈希表)从数组中找出两个数,之和等于给定的target。这个题其实双重遍历就能解决问题,但是我们不能就这样结束,不然后面的题就不好受了。class Solution: def twoSum(self, nums: List[int], target: int) -> List[int]: dic = {} for index in range(len(nums)):

2021-09-06 19:21:13 112

原创 python——切片的赋值问题

切片赋值?今天突然看到一个很有趣的问题,是将一个列表的切片进行了赋值,比如a = ['x', 'y', 'b', 'b', 'y', 'y', 'd', 's']a[2:4] = [***]这样的形式。当我看到答案的时候还真愣了一下,今天来总结一波。先说明两个问题:对一个切片进行整体赋值是可以影响原列表的,但如果是只改变一个元素,是不会有影响的。(这个问题实际上是可变不可变类型的问题,你换一个可变类型的元素,修改一下他就不会变了。b的指针位置和a是相同的,但是有一个位置的索引发生了改变

2021-09-05 09:18:25 2379

原创 leetcode——丑数相关习题

相关题目

2021-09-03 17:08:22 137

原创 python内置库——heapq(实现小顶堆)

官网地址:heapq — 堆队列算法特点堆本身还是一个树结构,通常还是使用数组进行存储,方便操作。我们找到py有一个基本语法是数组下标从零开始,py中的堆也是这样实现的,问题就是使得父子关系不那么直观。C++中的堆是大顶堆(大根堆),一般也是常用的一种堆,但是py中还是选择了实现一个小顶堆。内置方法创建堆:如果是用过counter的,可能感觉上是差不多的,就是对一个可迭代序列调用方法即可heapify(iterable)不过官方文档上的介绍,这个实现是原地的,并且是在线性时间内调整成堆

2021-09-03 10:30:02 2255

原创 python——哈希复习(构建哈希表&字典常规操作讲解)

小白的hash复习计划先上传一下相关资源吧,直接丢百度网盘了。一份字典的操作整理,一份md文档,和下面的相同还有一份是python数据结构黑书。准备是看一下python数据结构,黑书yyds第十章讲的是哈希表,结构:讲解了py中字典的一些行为,参见dic_use.py(下面第二个大标题)用list装了一个键值对的类,实现了一个collision库的有序字典(其实就是没哈希的)哈希知识复习根据MapBase基类实现了一个自己的哈希表(建议自己跟着书上码一遍,线性探测这种的实现

2021-08-03 11:36:59 414 2

原创 python生成html标签(定位参数和关键字参数、多个参数传入的解封装)

fluent_python的例子今天在书上看到了一个生成html标签的例子,刚好复习了一下定位参数和关键字参数的定义。定位参数:顾名思义,就是按照定义的位置来确定参数,所以参数的传递一定要按照参数的顺序。关键字参数:通过func(a=10,b=‘xybb’)这样的方式来指定形参内容的方式,叫做关键字参数。这种情况下可以不按照顺序传入。同时我们也可以进行混用传入,但此时定位参数是需要在前面的,将所有的关键字参数丢到后面。(不清楚如果两者交叉会怎么样,这样的细节可能会被问道,但在实际的应用中还是稳妥

2021-07-07 11:04:22 642 2

原创 关于python官方文档打不开这件事——修改host文件

打开方式:添加host首先win+R或者手动打开host文件的位置:C:\WINDOWS\system32\drivers\etc然后我们要先修改权限,hosts文件右键属性,找到安全栏,点击编辑。选中组和用户名中的users,然后在权限里面选上写入(会有一个弹窗,不需要管)然后就可以右键记事本打开host了。在host的最后添加:#python151.101.72.223 docs.python.org(ip+网址)他这个ip是怎么得到的呢?这里我查到的是nslookup,他给

2021-06-26 09:03:41 584

原创 python数据结构——二叉排序(搜索)树

概念二叉排序树很重要的性质就是左子树的内容 小于 根节点 小于 右子树,并且具有递归的性质,也就是每一个子树都满足。按照这个顺序,我们难免想到中序遍历,因为中序遍历就是左中右的顺序,使得我们的遍历结果为已排序序列。这里不提中序遍历,如果有问题看这里。(C代码,稍微改一下就行)我们提一下寻找一个结点p的上一个结点和下一个结点的方式(如果没有返回None)。上一个结点按照左中右的顺序,如果有左子树,那上一个结点一定在左子树中。那么应该是哪一个呢? 是左子树遍历的最后一个结点,也就是左子树的最右结点

2021-06-13 08:20:15 262

原创 python数据结构——实现自己的有序字典

有序字典我们之前讲过字典,并且尝试过用非排序列表和哈希表实现字典。那么什么是有序字典呢?就是字典中的key按照顺序排布。和collections中的有序字典还不一样,那个是保存了用户添加key-value对的顺序。实现这里我们采用一个列表来存储。因为是有序列表,所以我们用二分法来进行查找,进而实现插入和删除、修改。代码:from collections import MutableMappingclass MapBase(MutableMapping): """lightweig

2021-06-11 14:48:17 375

原创 python数据结构——哈希实现字典(map)

前言上一篇我们尝试使用未排序列表实现了字典,懂的都懂确实效果不好。这次我们来尝试一下使用哈希表来做,那么就先复习一下哈希的内容吧实现我们的字典,需要先import两个东西from collections import MutableMappingfrom random import randrange第一个是我们字典的基类,第二个是方便生成随机数class MapBase(MutableMapping): """lightweight composite to store ke

2021-06-09 08:32:59 692

原创 python数据结构——利用堆实现优先级队列

之前写过一个有序/无序列表来实现优先级队列的,在这里。这次,我们尝试一下用堆来实现。堆首先的话,这里默认的堆是小顶堆。堆,是二叉树的一种,更准确来说是完全二叉树,所以经常使用数组(python中用列表)来存储。如果对这一部分有问题,建议看这里。堆的性质就是根部的结点最小(这里默认小顶堆),因为树的递归性质,对于每一个子树都成立。堆支持插入和删除,一般删除都是指删除根节点,并且认为在操作之前堆是满足性质的。插入我们习惯的是先在列表的最后进行插入,然后此时一般会破坏堆的性质,我们就需要进行整理。

2021-06-08 08:54:34 363 2

原创 python&数据结构——未排序列表实现字典(map)

map,不完全是字典map的本意是映射,一个key-value对的映射。字典属于其中的一个,但平常见得多的主要还是字典,所以下面就直接上字典了。这里的话,我们是先提供了一个基本的结点,包含了key、value,然后重构了等于、不等于运算符(注意等于不等于运算符的内容是不同的,一个是key,一个是整体)等,主要的结构还是基于列表。其实字典最香的还是哈希实现的O(1)查找,列表做不到,但是实现一下加深理解,下一篇我们来一个哈希。from collections import MutableMappin

2021-06-07 12:14:37 265

原创 python数据结构——优先级队列

前言这里,我们的优先级队列是涉及到了一个key-value对的。组合设计模式

2021-06-02 08:41:53 486

原创 我的世界&python——外星人入侵(MinecraftShape函数对多方快对象的整体移动)

前言真就是万物皆可外星人,我直接好家伙。这次是要我们躲避外星人,生成一个外星飞船后,会先降落,然后寻找玩家的位置进行攻击,也就是使用“光线”抓住玩家。当然了,光线需要自行脑补。抓住玩家当然是传送走关小黑屋,过一段时间后放出来。在抓捕的过程中,外星人还能发动嘲讽技能。等等,不会真的有人不知道怎么搞api以及基本的语法吧,看这里整体代码:开始初始化HOVER_HEIGHT = 15mc = minecraft.Minecraft.create()mcdrawing = minecraftst

2021-06-01 08:54:00 551 2

原创 我的世界&python——方块朋友(方块设置&移动路径getline)

前言我们之前讲了一些方块的相关操作,比如setblock和getblock,以及打击事件接下来我们进行一个实战。创建一个钻石块,然后我们移动一段距离,方块会自动跟着我们;当距离超过一个限制,方块会跟丢,此时需要我们站到方块的旁边重新激活。如果对于一些基本设定忘了的,或者是还没有创建环境的,看这里实现先贴代码import mcpi.minecraft as minecraftimport mcpi.block as blockimport minecraftstuffimport mat

2021-05-31 08:45:11 630 1

原创 我的世界&python——“玻璃行者”

前言我们之前写了一个关于我的世界的python api的使用,如果有问题看一下这里这次我们准备实现一个玻璃行者,没错就是模仿那个宝藏附魔——冰霜行者。当玩家的脚下方块为空气或者是水,我们就能在脚下生成一个玻璃。和原来的冰霜行者稍有不同,我们在玩家的位置相对安全的时候,才对已经生成的玻璃进行清除。实现这里有一个点,在清除的时候,我们是先清除最早生成的,所以这里我们使用了一个叫做队列的数据结构。如果对这个概念不太清楚,看这里这里我们就不手动实现了,而是采用了queue库。import mcpi

2021-05-30 08:30:44 325

原创 python数据结构——用链表实现栈、队列、循环队列、双向队列

前言先复习一下几种数据结构吧。链表,就是一个个结点,用指针的方式来连接起来,因为py的语言特点,我们只需要将next赋值为下一个对象的变量名即可。(变量名本身就可以理解成一个指针索引)如果链表还有问题,看这里。队列和栈,前两天用list实现了一个,在这里,也有讲解。一个是first in first out,另一个是first in last out。双向队列,就是两端都能插入删除的队列,这个的实现需要双向链表。循环队列,之前是list实现的,这里我们用一次node,结构基于循环链表。双向链

2021-05-29 09:45:41 802

原创 我的世界&python——搭建金字塔几种方法

前言之前发了一个mc的基本操作以及api的使用,如果有问题看这里。这次我们使用不同的方式来实现一个金字塔。最简单的话,使用我们已有的setblock,以及for循环就能实现一个。不过我最想讲的,还是使用minecraftstuff模块自带的一个绘制多边形的方法。实现先来一个循环的吧,这部分就直接看代码&注释然后是我们的模块讲解。minecraftstuff中提供了一个类叫做MinecraftDrawing,这个类中有很多的绘制函数,比如给两个点绘制一条直线,或者是绘制圆、球,当然也有

2021-05-27 08:33:53 1609 1

原创 python数据结构——基于双向链表的位置列表类

双向链表这里直接给出代码,有问题的看这里。class _DoublyLinkedBase(): """a base class poviding a boubly linked list representation""" class _Node(): __slots__ = '_element','_prev','_next' def __init__(self,element,prev,next): self._element

2021-05-26 08:33:03 264

原创 我的世界&python——绘制时钟(minecraftstuff绘制圆和直线)

前言这次我们尝试在mc中绘制一个时钟,能按照外界的时间进行移动。主要使用的是我的世界的python api:mcpi,以及minecraftstuff包(主要是绘制一些形状)实现先贴一下代码:"""draw line and circle by minercraftstuff"""import mcpi.minecraft as minecraftimport mcpi.block as blockimport minecraftstuffimport timeimport dateti

2021-05-25 09:09:41 1223 4

原创 我的世界&python——读取csv文件实现迷宫

前言我们在之前的博客中讲了如何使用mc的python api,如果有问题看这里。这次,我们讲一下如何读取一个csv文件,我提前准备了一个:1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,1,1,1,1,1,1,1,1,0,1,0,1,1,0,11,0,0,1,0,0,0,0,1,0,1,0,1,0,0,11,1,0,1,0,1,1,0,0,0,0,0,1,0,1,11,1,0,1,0,1,1,1,1,1,1,1

2021-05-24 09:00:04 359

原创 我的世界&python——扫描到csv文件

前言之前我们讲了一些关于mc的基本设置,如果有问题先看这里。这部分我们讲一下如何将一棵树扫描成csv文件。这样做的意义很明显,我们可以在任意一个地方读取这个文件,并创建一个一模一样的树。也不一定是树,也可以是林地府邸、海底神殿,甚至是迪哥的绿宝石城堡。csv文件的话,就是用逗号分隔的一个个数据,然后的话,可以第一行有一个每一列的内容,有一点像excel文件。实现代码:"""扫描一定范围内的方块,存入csv文件"""import mcpi.minecraft as minecraftmc

2021-05-23 08:24:11 211

原创 python数据结构——利用列表实现栈和队列

前言栈和队列的内容,这里就不多说了,还有不清楚的看一下这里。其实list能实现的要比我们定义的栈和队列多很多功能,但是我们还是要实现一个。这里采用的duck typing,也就是你看到一只鸟,跑起来像鸭子,飞起来像鸭子,叫起来像鸭子,那么他就是一个鸭子实现先上代码吧。事先说明:这里有一个empty异常,但是我并没有定义这个类,这个需要继承Exception,这里就不实现了,感兴趣的自己看一下吧栈:"""list实现的栈"""class ArrayStack(): def __

2021-05-22 20:12:42 678

原创 python数据结构——基于ctypes生成的动态数组

什么是动态数组详细的看一下这里,动态数组最重要的其实对于当前已有的元素个数调整数组的大小。说明白一点其实就是当元素个数装满了,将数组的大小扩大到2n;当元素个数小于1/4n,将数组的大小调整到n/2。其中调增的方式就是整体移动,虽然看着代价很大,但是平摊下来其实还是O(n),这部分的证明在上面的链接中。实现"""动态数组类,基于ctypes"""import ctypesclass DynamicArray: def __init__(self): self._n = 0

2021-05-22 08:02:29 388

原创 多个python环境下的脚本运行以及pip使用(踩了一万个坑的结果)

前言为了用网易 我的世界api,没办法我下载了一个python2。最开始想的是用虚拟机,但是效率不行。装好了python3.9和python2.7不需要修改exe文件名不需要修改exe文件名不需要修改exe文件名改了是很爽,但是pip一用火葬场。这里我们使用的c:\windows\py.exe添加路径设置->系统(我这里第一个)->关于->拉到下面有一个红色的高级系统设置,有一点不好找;找到环境变量,然后是系统变量的path,点编辑应当有下面三组:d:\p

2021-05-21 22:18:06 657

原创 python数据结构——实现自己的range类

先看一下range的几个例子range(fir,last)range(last)range(first,last,step)range(5,3,-1)range,最多传入三个参数,分别为开始、结束以及步长,返回一个[fir,last)区间内按照步长取值形成的迭代器(python2中返回列表,后面为了节省空间在python3中改了)比如range(2,6,2),返回[2,4]序列。如果step为负数,那么应当有fir>last,如range(8,4,-2)返回[8,6]我们可以省略st

2021-05-20 17:26:52 402

原创 我的世界&python api入门

准备工作首先给出我学习的书籍:电子版百度网盘链接:链接然后第一章讲述了怎么使用,这里我是上网找了一个启动器(没有国际版,不过准备冲了)书上的话,其实看着还是有一点别扭的,所以我给出了一个dl整理的博客:链接开始首先介绍一下会使用到的几个模块:mcpi.minecraft:我们主要使用的模块,涉及到很多的基本操作,其创建的对象有定位、传送等操作。(反正就是很重要)mcpi.block:涉及到各种的方块,这部分我简单看了一下,是前面有一个类,涉及到一些模块的基本属性,后面是各种实例,每一个实

2021-05-20 13:57:05 5441 4

原创 python实现2048——1、界面&逻辑

前言这次,我们来尝试一下2048这款游戏,不了解的可以自行玩一下,这里不展开了。还是使用pygame,因为我们之前已经有过了好几个pygame项目了,这次我准备快一点,主要讲其中的逻辑部分。界面搭建这部分的pygame调用会一笔掠过,如果不知道原理的看一下这个:之前的部分2048的效果是这样的:4*4的格子,每一个格子上都有一个数字,并且下面有我们的得分。这次我们没有再使用创建类的方式来存储rect对象和数字,而是分开成两个。num二维数组:存储数据;rectangle数组:存储rec

2021-05-08 08:34:29 642 2

原创 python的生成器和列表的一个小坑(生成器可修改)

由来没事刷leecode,有一个1089题,讲的是在一个列表中,我们需要在每一个0后面插入一个0,并且保证列表总长度不变。那么我就用一个列表将所有需要插入的地方存起来,然后在对应位置插入即可:def duplicateZeros(arr): n = len(arr) zero = [i for i in range(n) if not arr[i]] for i,num in enumerate(zero): if i+num+1 >= n:

2021-05-07 10:30:27 270 1

原创 pygame实现贪吃蛇——2.逻辑实现

前言在上一篇博客中,我们实现了基本的界面搭建,这次实现一下逻辑部分。创建蛇首先,先分析一下蛇的移动,不然我们一定会吃亏的(别问,问就是自己写了一堆无效代码)。蛇的移动其实并没有想象中那样复杂,每一个模块都需要有一个方向,按照方向进行移动,其实实际上就是一个出队的感觉,即每一个元素都取代上一个元素的位置,然后再按照贪吃蛇当前的方向,移动一下头节点即可。snake.py:""""????类"""import pygameclass Snake(): def __init__(self,s

2021-05-06 10:06:29 429 4

空空如也

空空如也

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

TA关注的人

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