自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(38)
  • 收藏
  • 关注

原创 二叉树前序、中序、后遍历的递归和非递归的实现

二叉树前序、中序、后遍历的递归和非递归的实现1.二叉树的先序遍历①递归方式②非递归方式(1)思路首先准备一个栈,遍历一开始,先把根节点放到栈里面去,然后就是固定流程:每次从栈中弹出一个节点,记为cur;打印cur(或者说处理cur);先把cur右孩子压到栈里面去,再把cur左孩子压到栈里面去,如果有的话;周而复始前三步。当栈为空时,整个遍历过程结束。(2)图解过程初始时,根节点1进栈;节点1出栈,并打印,同时节点1的右孩子先进栈,然后其左孩子再进栈;

2022-01-05 22:47:43 517

转载 替换空格

题目描述请实现一个函数,把字符串 s 中的每个空格替换成"%20"。示例 1:输入:s = "We are happy."输出:"We%20are%20happy."题解本题题解

2021-03-12 15:30:27 125

转载 二维数组中的查找

题目描述在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。示例:现有矩阵 matrix 如下:[ [1, 4, 7, 11, 15], [2, 5, 8, 12, 19], [3, 6, 9, 16, 22], [10, 13, 14, 17, 24], [18, 21, 23, 26, 30]]给定 tar...

2021-03-12 00:15:44 233

原创 数组中重复的数字

题目描述找出数组中重复的数字。在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。示例 1:输入:[2, 3, 1, 0, 2, 5, 3]输出:2 或 3 限制:2 <= n <= 100000题解①class Solution { public int findRepeatNumber(int[] nums) {

2021-03-11 17:58:16 108

原创 python全局变量和局部变量

概念全局变量:定义在函数外部的变量,可在函数外部和函数内部使用局部变量:定义在函数内部的变量,只能在函数内部使用注意:如果局部变量和全局变量同名,会在函数内部又定义一个新的局部变量, 例如以下:name = 'zhangsan'def foo(): name = 'lisi' print('函数内部的name: %s' % name)foo()print('函数外部的name: %s' % name)...

2020-08-19 12:13:55 186

原创 python多任务之多线程

线程等概念并行  多个任务同时执行,建立在多核CPU基础上。(4个人吃饭,有4套餐具,可以同时吃)并发  经过CPU的调度,快速的在单核CPU上多个任务的快速切换。(4个人吃饭,只有一套餐具,只能一个人一个人的吃)进程  (公司) 资源单位,进程之间是相互独立的,进程自己是不能运行的,进程中的线程是负责执行和调度的,每个进程中默认都会有一个主线程线程  (公司里的人) 执行单位注意:进程的线程数 = 主线程 + 子线程创建线程Python3 线程中...

2020-08-18 23:41:08 761

原创 python网络编程

什么是 Socket?Socket又称"套接字",应用程序通常通过"套接字"向网络发出请求或者应答网络请求,使主机间或者一台计算机上的进程间可以通讯。创建套接字在Python中,我们使用socket模块的socket函数来创建套接字语法格式:socket.socket([family, type, protocol)参数:family: 套接字家族可以是 AF_UNIX:只能够用于单一的Unix系统进程间通信 AF_INET:指定使用IPv4协议进行服务器间网络通信 .

2020-08-17 22:04:07 292

转载 正则表达式

何为正则表达式?正则表达式(Regular Expression)是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符")。正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串正则表达式的简介正则表达式的使用,可以通过简单的办法来实现强大的功能。下面先给出一个简单的示例: ^为匹配输入字符串的开始位置。 [0-9]+匹配多个数字,[0-9]匹配单个数字,+匹配一个或者多个。 abc$匹配字母abc并以a...

2020-08-08 12:03:31 206

原创 可迭代对象、迭代器和生成器

可迭代对象:实现了 __iter__()方法的对象 迭代器:把一个类作为一个迭代器使用需要在类中实现两个方法 __iter__() 与 __next__()可迭代对象(iterable)什么是可迭代对象?在python3中实现 __iter__()方法的对象就是可迭代对象,__iter__()方法返回的是一个迭代器对象(在迭代器中返回自己,在可迭代对象中返回帮助自己迭代的迭代器)。直观理解就是能用for循环进行迭代的对象就是可迭代对象。比如:字符串,列表,元组,字典,集合等等,都是可迭代对象.

2020-08-05 14:44:01 278

翻译 with关键字和上下文管理器

上下文管理器原文:https://blog.youkuaiyun.com/u010339879/article/details/103340517什么是上下文管理器?任何实现了__enter__()和__exit__()方法的对象都可称之为上下文管理器实现了__enter__()和__exit__()方法的对象就可以使用 with 语句上下文管理的作用 和 目的上下文管理 对象 是为了存在的目的 是管理 with 语句, 而 with 语句 目的是为了 简化 tyr/ final...

2020-08-04 14:36:23 160

原创 python异常处理

什么是异常?异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行。一般情况下,在Python无法正常处理程序时就会发生一个异常。异常是Python对象,表示一个错误。当Python脚本发生异常时我们需要捕获处理它,否则程序会终止执行。异常处理捕捉异常可以使用try/except语句。try/except语句用来检测try语句块中的错误,从而让except语句捕获异常信息并处理。如果你不想在异常发生时结束你的程序,只需在try里捕获它。语法:以下为简单的

2020-08-04 13:31:11 128

转载 JSON模块和pickle模块

https://blog.youkuaiyun.com/qq_38684504/article/details/86636568

2020-08-03 15:37:55 118

原创 python中对文件的操作

文件的打开和关闭使用内置函数open打开文件open函数主要参数介绍:def open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True)file:需打开文件的路径mode:文件打开方式,默认为 r ,表示只读encoding:是用于解码或编码文件的编码的名称注:open函数会返回一个文件对象 在windows中,默认使用gbk编码格式...

2020-08-01 14:38:18 187

原创 python之封装、继承、多态

目录封装继承继承的基本使用私有属性的继承特点新式类和经典类子类重写父类的方法多态Java和python多态使用的不同表现封装封装:即打包函数是对语句的封装 类是对函数和变量的封装继承继承的基本使用什么是继承?继承是一种创建新的类的方式,新创建的叫子类,继承的叫父类、超类、基类。特点:子类可以使用父类的属性(特征、技能)继承是类与类之间的关系为什么要使用继承?减少代码冗余、提高重用性继承的使用单继承cl...

2020-07-31 15:01:24 1442

转载 单例设计模式

单例设计模式的目的让 类 创建的对象,在系统中 只有唯一的一个实例(每一次通过类创建的对象的内存地址是一样的)单例设计模式的应用场景回收站 对象 打印机 对象 ...................单例设计模式的具体使用前置知识:当我们通过类来创建对象时,python的解释器首先会调用 __new__方法为对象分配空间__new__是一个 由object基类提供的内置的静态方法,主要作用有两个:在内存中为对象 分配空间 返回 对象的引用Pytho...

2020-07-28 14:49:47 123

原创 对象方法、静态方法、类方法

目录对象方法类方法语法格式:类方法的调用:静态方法静态方法的定义:静态方法的调用:同类方法的调用对象方法这种方法都有一个默认参数:self 这代表实例的这个对象 def add(self): pass注意:类不能直接调用对象方法类方法类方法前面用 @classmethod 修饰器进行修饰 类方法会有一个默认参数 cls,不需要手动传值,会自动传值。cls指的是类对象 一般情况下,如果这个函数只用到了类属性,我一般会把这个函数定..

2020-07-22 20:12:13 521

原创 私有属性和方法

私有属性能够在类内部调用,不能在类外部通过 对象名.属性名 调用的属性,我们称之为为私有属性私有属性的定义:__属性名在python中,我以 双下划线 + 属性名 的方式,定义私有属性私有属性在外部的调用:使用 对象名._类名__私有名 来调用class Student: sex = '男' def __init__(self, name, age): self.name = name self.age = age...

2020-07-22 12:22:14 349

原创 类属性和对象属性

class Student: sex = '男' def __init__(self, name, age): self.name = name self.age = agestudent1 = Student('小明', 18)对象属性:student1 叫做实例对象,每个实例对象都会在内存拥有一块独立一块空间,像name、age这样在 __init__ 中定义了的属性,叫做对象属性,都保存在实例对象的内存空间中类属性:同样对于模板.

2020-07-22 11:37:13 818

原创 python中对象的魔法方法

目录__str__ 方法和 __repr__方法__call__方法__eq__方法__str__ 方法和 __repr__方法在python中当我们打印一个对象时,会自动调用__str__ 或者 __repr__方法,未对这两个方法重写时,他们会返回如 <__main__.Student object at 0x0000023E39668B00> 这样的结果。当然我们可以重写这个方法,来获得不同的输出结果。未重写前,打印对象的结果:class Student:

2020-07-16 00:09:26 212

原创 __slots__属性的使用

python是一个动态语言。如果直接给python的一个对象不存在的属性赋值,这个属性会被添加到对象的属性中例:class Student: def __init__(self, name, age): self.name = name self.age = agestudent1 = Student('小明', 18)student1.city = '武汉'print('city: ', student1.city)当然,我们可以使用__s

2020-07-15 20:11:21 216

原创 python之 __name__ 的使用

当我们写好一个模块后,在模块里对所写的方法等进行调用后,调用后的结果在导入该模块的程序里同样会输出例:my_module模块代码:def my_print(): print("李知恩")my_print()测试代码:import my_moduleprint('www.baidu.com')测试结果:解决方法:使用__name____name__:当直接运行 my_module.py 这个文件时,__name__的值是 __main__.如果.

2020-07-15 19:17:07 131

原创 python之装饰器

装饰器的基本使用一、装饰器是什么?python的装饰器本质上是一个Python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象。简单的说装饰器就是一个用来返回函数的函数。二、为什么需要装饰器1.先看一个简单的例子def foo(name): print('i am {}'.format(name))2.增加需求上面的函数foo已经是封装好了的,不能在 foo 里面做任何更改。现在要求 当其年龄大于20岁时,才打印其名字

2020-07-15 15:26:13 113

原创 filter & map & reduce的使用

filter内置类的使用filter 英文解释为中文为过滤,则可以理解filter内置函数的功能主要为过滤不要的信息,保留需要的信息filter在python2中是一个内置方法,在python3定义成了内置类filter(function or None, iterable),可传入两个参数:函数名或None,可迭代对象。 filter的返回值是一个filter类型的对象,该对象也是可迭代对象函数的作用:如果传入了函数名,那么函数中会判断元素是否满足编写的逻辑条件,如果满足,返回True

2020-07-14 23:53:49 145

原创 sort方法的高级使用(列表)

当一个列表里面只有纯数字等时,sort函数能够很好的进行排序。但如果是列表里面嵌套字典等,使用sort()普通方法是没法排序的,因为没有比较规则,必须指定其比较规则这时我就需传入比较规则 sort(key=None, reverse=False) 中的key 参数,但此参数的值必须是一个函数实例:name1 = [{'name': 'zhangsan', 'age': 18, 'height': 176}, {'name': 'zisi', 'age': 21, 'heigh

2020-07-14 22:32:27 623

原创 python之匿名函数

前置知识如何给函数取别名:在python中,函数名代表的是一块内存地址,该内存地址里存放函数内的代码。如果直接把函数名赋值给另一变量 a,也就使的a指向了函数名所指向的内存空间。由此 变量 a 就相当于该函数的别名实例:def add(a, b): return a + b# 给add 取别名为fnfn = add# 通过fn调用函数print(fn(1, 3))匿名函数用lambda关键字能创建小型匿名函数,这种函数省略了def 声明的标准步骤

2020-07-14 20:53:47 218

原创 python函数之可变长参数

在python中,可以传入任意多个参数有两种方式: *args, **kwarg*args*args可变长参数,能够使得传入任意个位置实参。在*args中,数据是保存在一个元组中的。# 注意:如果有额外的位置形参,必须写在*args前面def add(a, b, *args): print('*args中的数据:{}'.format(args)) c = a + b for i in args: c += i return cpri.

2020-07-14 19:19:30 294

原创 python函数之可变长参数

在python中,可以传入任意多个参数有两种方式: *args, **kwarg*args*args可变长参数,能够使得传入任意个位置实参。在*args中,数据是保存在一个元组中的。# 注意:如果有额外的位置形参,必须写在*args前面def add(a, b, *args): print('*args中的数据:{}'.format(args)) c = a + b for i in args: c += i return cpri.

2020-07-14 19:18:52 287

原创 集合

set的使用集合(set)是一个无序的不重复的序列,可以使用大括号{} 或者 set(可迭代对象) 函数创建集合。如果{}里面是键值对则为字典,只有单个的数据则为集合注意:创建一个空集合必须用set() ,而不是{},因为{}是用来创建一个空字典集合添加元素语法格格式如下:s.add(x)将元素 x 添加到集合 s 中,如果元素已存在,则不进行任何操作集合的 union(可迭代对象 )方法,union方法将多个集合合并生成一个新的集合,返回值为新的集合nums = ...

2020-07-14 17:56:56 236

原创 字典

字典的基本使用列表:列表可以存储任意数据类型,但是一般情况下,我们都存储单一数据类型。然而列表只能存储值,无法对值进行描述字典:字典不仅可以存储值,还能对值进行描述。采用键值对的形式eg: person = {'name': '张三', 'age': 18}字典的注意事项字典里的key不允许重复,如果重复了,后一个key对应的值会覆盖前一个person = {'name': '张三', 'age': 18, 'sex': '男', 'age': 20}print(person.

2020-07-14 16:30:44 430

原创 python之列表

列表的基本使用# 可以使用[] 来表示一个列表,列表里的每一个数据我们称之为元素names = ['张三', '李四', '王五']print(names)# 可以使用 list(可迭代对象) 将可迭代对象转换成一个列表names2 = list(('22', '33'))print(names2)添加列表元素使用append()方法,在列表末尾添加一个元素names = ['张三', '李四', '王五']names.append('索顿')print(n.

2020-07-14 12:52:59 460

原创 字符编码

对于我们的计算机来说,它只能认识0,1这种二进制数字,而不能识别像汉字一样的字符。由此人们就有了对字符的编码何为编码?简单来说,将字符到0,1二进制数据的映射称为编码,将0,1二进制数据到字符的映射称为解码ASCII(单字节)ASCII字符集最初只能表示128个字符,用7位二进制数表示(00000000---01111111,未使用一个字节的最高位)。但此时的128个字符并不能满足人们的需要,由此出现了ASCII扩展集,可表示256个字符,用8位二进制数表示(00000000--..

2020-07-12 20:49:27 186

原创 Pycharm快捷键的使用

双击 shift 会弹出全局搜索功能,JetBrains开发的工具很多都有这个功能 快速格式化代码 ctrl+alt+l 移动一行代码 ctrl+shift+ 上下箭头 移动光标到一行的最前面 fn + <— ,移动到最后面 fn + —> 多行注释,ctrl + / ...

2020-07-12 18:58:05 96

原创 python基础学习

for…in循环1. for循环格式# 可迭代对象比如:字符串、列表、字典、元组、集合、range等for 临时变量 in 可迭代对象: 循环满足条件时执行结果2. for…in循环的使用遍历字符串for s in "hello": print(s)...

2020-07-12 15:01:03 195

原创 全排列(递归实现)

#include<iostream>using namespace std;void printArray(int A[],int n){ for(int i=0;i<=n;i++) { cout<<A[i]<<' '; } cout<<endl;}void Swap(int A[],i...

2019-04-09 13:35:57 188

原创 简单二叉搜索树(Binary Search Tree,简称BST)

二叉搜说树的概念:首先它必须是一棵二叉树,其(根>左)&&(根<右).ps:此处的所讲不包含相同的节点。例:6,3,8,2,5,1,7代码实现此二叉搜索树:#include<iostream>#include<stdlib.h>using namespace std;typedef struct node{ int d...

2019-04-08 21:29:56 220

原创 原码、反码、补码

有符号数据的表示符号:用0、1表示正、负号,放在数值的最高位小数点:定点数:约定小数点隐含在某一位置上浮点数:小数点可以任意浮动点可以任意浮动有符号数的表示在计算机中:有符号数可表示为原码、反码、补码。原码:最高位表示数的符号,其它位表示数值例:[+7]原=00000111B [-7]原=10000111B(ps:B代表二进制多的意思)反码:正数的反码和原码相...

2019-04-01 22:58:36 278

原创 栈的创建、进栈、出栈(数组)

#include&amp;amp;lt;stdio.h&amp;amp;gt;#define max 100typedef struct{ int data[max]; int top;}Stack;/*初始化栈*/Stack *init_stack(){ Stack *stack; stack=(Stack*)malloc(sizeof(Stack)); stack-&amp;amp;g...

2019-01-03 19:57:50 516

原创 求最大公约数和最小公倍数

求最大公约数:1、基本概念:如果数a能被数b整除,a就叫做b的倍数,b就叫做a的约数。约数和倍数都表示一个整数与另一个整数的关系,不能单独存在。如只能说16是某数的倍数,2是某数的约数,而不能孤立地说16是倍数,2是约数。  "倍"与"倍数"是不同的两个概念,"倍"是指两个数相除的商,它可以是整数、小数或者分数。"倍数"只是在数的整除的范围内,相对于"约数"而言的一个数字的概念,表示的是能被...

2018-12-24 13:59:11 670

空空如也

空空如也

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

TA关注的人

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