- 博客(28)
- 收藏
- 关注
原创 Leecode刷题笔记 回溯
电话号码的字母组合给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例 1:输入:digits = “23”输出:[“ad”,“ae”,“af”,“bd”,“be”,“bf”,“cd”,“ce”,“cf”]示例 2:输入:digits = “”输出:[]示例 3:输入:digits = “2”输出:[“a”,“b”,“c”]解题思路回溯问题的根本其实是树的遍历问.
2022-05-05 22:16:12 201
原创 面试查漏补缺
sql问题1:有两张表,table1描述用户最近30天内访问的天数,有3个字段:日期log_date,user_id,访问天数,table2描述每个用户的pv,有3个字段:日期,uid,pv求3.14这天最近三十天内访问天数在1-10,10-20,20-30三个区间的用户的总pv和总uv(pv指这个用户的点击次数,可能每个用户有很多次,uv指每个人的访问次数,每个用户只能是0或者1)总pv:Selectsum(case when 1=<table1.访问天数 and table1.访问天数
2022-03-15 23:41:35 200
原创 python语法笔记
定义函数中self的作用:比如class muffledcalculator:muffled=Falsedef calc(self,expr):。。。。这里对象调用方法时, 实际上是通过类调用的:a = muffedcalculator()a.calc(expr)实际上是这样调用的 muffledcalculator.calc(a, expr)这样self 就是a, python隐含地把a 传进方法从而替代了self, 就成了绑定的方法, 就可以执行了. 否则就是非绑定方法...
2022-03-06 23:02:07 185
原创 Leecode刷题笔记 动态规划
动态规划的三个步骤:1.找到状态转移方程2.将每个状态的结果按顺序存储3.指定输出结果位于存状态的数组的位置62. 不同路径一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。问总共有多少条不同的路径?输入:m = 3, n = 7输出:28示例 2:输入:m = 3, n = 2输出:3解释:从左上角开始,总共有 3 条路径可以到达右下角
2021-12-13 16:55:40 238
原创 python创建数组时的浅拷贝避坑
今天在刷题 5. 最长回文子串 时用动态规划做这道题,创建二维数组时用 size=len(s) dp=[[False]*size]*size创建数组,最后明明代码没问题,有些样例就是过不了。最后想起来好像是因为浅拷贝。其实这样的数组初始化方法就是下面这种:arr = [[0] * 3] * 4下面这种方式也是一样的问题:a = [[]]*4这样的问题在于其实4只是复制了n个[0,0,0]或者[]的引用,改任何一个数组都会让另外3个发生改变。(但是3没有关系)
2021-12-13 15:43:39 847
原创 Leecode刷题笔记 二叉树
二叉树的最大深度给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7],返回它的最大深度 3 。思路:DFS采用递归,一直递归左右子树深度的最大值+1,递归终止条件是根节点等于0,此时return0# Definition for a binary tree node.# class TreeNode(object):# def __i.
2021-04-02 15:59:03 356 2
原创 leecode刷题笔记-字符串
collections.Counter()collections.Counter()用于快速设置哈希表,其中value的值是每个key出现的次数,举例如下:给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。示例:s = “leetcode”返回 0s = “loveleetcode”返回 2class Solution: def firstUniqChar(self,s): dct = collections.Counter(s)
2021-03-16 14:10:41 580
原创 leecode刷题笔记-数组
数组初始化方法:ans = [[None] * R for _ in xrange(C)]这里的xrange()和range()完全一样。如果R=3,C=4,这里ans就初始化为一个3*4的list,其中每个值都为[None],也就是这种形式ans=[[None, None, None, None], [None, None, None, None], [None, None, None, None]]首先这里的[None]*R定义了维度,例如:E=[None]3此时E为[No
2021-03-07 19:13:13 653
原创 数据结构笔记5(排序 下)
快速排序(quick sort)算法概述分而治之例如:从下图中随便选一个数字作为主元pivot,图中选了65.接下来以65为中枢,将原来的集合分为两大块,左边这一块全部小于65,右边全部大于65.加下来递归地去治理左边和右边,得到最终结果。...
2020-12-25 20:37:52 278
原创 数据结构笔记4(排序 上)
冒泡排序基本原理:以从小到大排序为例,每次从上到下比较两个相邻的值,如果不是从小到大的顺序则互换这两个值的位置。符合顺序则不变。这样从第一个到最后一个筛选一遍,第一趟排序结束,此时最大的数已经放在了最后面,即已经确定了最大数的位置此时对前N-1个数重复该过程(因为刚已经确定了第N个位置的数),这一趟结束后确定了第N-2的位置的数。持续该过程。伪码:swap()是交换位置的函数。最开始时P等于最后一个元素的位置,即N-1(整个序列是0-(N-1) )。也就是第一趟是从第一个到第N-1个进行遍历。第
2020-12-15 01:11:37 323
原创 数据结构笔记3(图 下)
最短路问题此类问题可以抽象为:最短路问题也分为两类:从V3的直接邻接点开始,一圈一圈往外扩展。其实和广度优先搜索BFS很相似。不过与DFS通过给每个节点加一个visited[]变量判断该点是否已访问不同,这里通过dist[]数组,即与源点发热最短距离判断...
2020-12-13 16:59:57 529
原创 数据结构期中测验习题+树习题选讲
此题选B,举出反例如下图:这里节点6可以没有右子树(详见完全二叉树定义)但不能没有左子树,因此也可推断出D项是对的,因为只可能是根节点的右子树缺一个节点,所以中位数在根节点或根节点的左子树。...
2020-11-13 20:17:35 198
原创 数据结构笔记3(图 上)
什么是图?表示多对多的关系包含:一组顶点,通常用V(Vertex)表示顶点集合一组边,用E(edge)表示边的集合边是顶点对:如下图;有向边<v,w>表示从v指向w的边,单行线抽象数据类型定义数据对象集: G(V,E)由一个非空的有限顶点集合V和有限边集合E组成。操作集:...
2020-11-13 16:48:31 203
原创 数据结构笔记3(哈夫曼树和哈夫曼编码)
哈夫曼树的目的是构造效率更高的搜索树。定义:例如如果换一种排练顺序,即把权值低的放在浅层,权值高的放在深层。如下图,此时的WPL为50所以如何构造一个让WPL最小的树,就是哈夫曼树解决的问题。哈夫曼树的构造:先把各节点按从小到大进行排序;每次把权值最小的两个节点进行合并,并在一起,形成新的二叉树,该二叉树的权值就是并在一起的两个节点的权值之和如下图,将1 和 2 并在一起形成了新的二叉树,二叉树权值为3.接下来从新的权值,也就是3 3 4 5四个里面找两个最小的,再进行合并,如下图
2020-11-09 17:07:46 1826 1
原创 数据结构笔记2(堆)
堆:采用完全二叉树进行存储,有两个特性:例如,下图左边两个完全二叉树是最大堆,右边两个是最小堆。但要注意堆一定要是完全二叉树,比如下图左边两个因为不符合完全二叉树,所以不是堆。下图左数第三个看似是最小堆,但是因为节点16比其子树15大,所以不符合,也不是堆。所以堆的特点是:从根节点到任意节点路径上节点序列的有序性...
2020-11-08 16:14:02 383
原创 数据结构笔记(基础)
“在线”:指每输入一个数据进行及时处理,在任何一个地方终止输入,都能正确给出当前的结果线性结构:广义表:习题: 对于线性表,在顺序存储结构和链式存储结构中查找第k个元素,其时间复杂性分别是多少?O(1)和O(n)顺序存储可以实bai现“随机存取”,因此访问结点的时间复杂度为O(1),而插入、删dao除结点由于涉及到大量移动元素,故其时间复杂度为O(n)。用存储结点的物理位置来体现结点之间的逻辑关系的存储方法。在高级语言中,一块连续的存储空间通常可用一个数组来表示。因此,顺序存储通常用一个数据元
2020-11-07 10:36:02 1153
原创 计算机组成原理笔记3存储器1
一、概述存储器的分类:半导体存储器(TTL、MOS)磁表面存储器(利用磁表面磁化不同方向来存储0/1,如磁盘)磁芯(core)存储器(通过导线留过电流对磁芯磁化,根据磁化后N,S级的方向来保存0/1)二、主存储器...
2020-02-04 23:07:59 1726
原创 计算机组成原理笔记2总线
总线的分类1.片内总线 芯片内部的总线2.系统总线 计算机各部件之间的信息传输线系统总线分为:数据总线 双向 与机器字长、存储字长有关 (比如一台64位的计算机,8位数据总线,那么传一次信息数据总线要传8次)地址总线 单向 因为要进行寻址,所以与存储地址,IO地址相关控制总线 有出 有入 如存储器的读、写操作,总线允许,中断确认等,都是...
2020-02-04 19:10:20 1063
原创 计算机组成原理笔记1
MAR 存储器地址寄存器,反应存储单元个数MDR 存储器数据寄存器,反应存储字长注:乘法是通过累加完成的,中间结果要保存到ACC,所以ACC不需要清零。而除法是被除数不断减去除数实现的,最后剩下的就是余数,减得次数就是商。即,除法每次都从acc中减去一个除数并计数。所以ACC不需要清零,这时候ACC中存的就是余数。以一条取数指令为例首先控制器的PC寄存器中存着这条指令的地...
2020-02-03 16:48:37 1586
原创 ZY的Python入门笔记
关于Python数组中-1的用法Python中数组的用法灵活多样,常用的记下来了,但是遇到-1就容易混淆。在这里记录一下。一个数组a=[0,1,2,3,4],a[-1]表示数组中最后一位,a[:-1]表示从第0位开始直到最后一位,a[::-1]表示倒序,从最后一位到第0位。Python中strip()、lstrip()、rstrip()用法详解Python中有三个去除头尾字符、空白符的函数,......
2020-02-03 16:48:13 2173
原创 ZY的JAVA学习DAY7
一个标准的类一个标准的类通常要拥有下面四个组成部分:1.所有的成员变量都要用private关键字修饰2.为每一个成员变量编写一对Getter/Setter方法3.编写一个无参数的构造方法4.编写一个全参数的构造方法这样的标准类也叫JAVA BeanIDEA中有快捷方法来使编译器自动生成Getter/Setter方法和构造函数。**Getter/Setter方法:**在IDEA的最上...
2019-10-16 15:45:54 140
原创 ZY的JAVA学习DAY6
JAVA类中的私有(private)定义成员变量时在前面加关键字,如public class Person(){private int age;}私有关键字可用于一些不允许直接访问的对象,此时可通过间接访问来改变私有成员。如上面的age变量,我们要对它进行操作,可以在类中再定义两个方法:public void setAge(int num){ //这个成员方法用于向age设置数据...
2019-10-16 13:19:46 121
原创 ZY的JAVA学习DAY5
数组获取数组的长度:数组名称.length这将会得到一个int数字,代表数组的长度。如 int[] arrayA={10,20,3,5};int len=arrayA.length;这里len长度就是4。数组的遍历:for(int i=0;i<array.length;i++)快捷输入方式是输入array.fori,回车数组的逆序互换:初始化语句: int min=0...
2019-10-16 13:01:53 85
原创 ZY的JAVA学习DAY4
数组的定义和使用定义动态初始化格式:数据类型[ ] 数组名称=new 数据类型[数组长度];如:int[] arrayA=new int [300];double[] arrayB=new double [5];静态初始化格式:数据类型[ ] 数组名称=new 数据类型[] {元素1,元素2,…};或有省略的初始化格式:数据类型[ ] 数组名称={元素1,元素2,…};如:...
2019-10-11 21:36:29 118
原创 ZY的JAVA学习DAY3
方法定义一个方法的格式:public static void 方法名称(){方法体}方法名称的命名规则和变量一样,用小驼峰式,即(第一个字母小写,后面每个单词首字母大写)Jshell类似于python的解释器,无需使用类或者方法包装来执行 Java 语句,可以直接输入表达式并查看输出结果。用于轻量级的程序任务。在cmd中输入jshell来启动,用==/exit==来退出编译器的两...
2019-10-10 21:35:39 116
原创 ZY的JAVA学习DAY2
JVM:JAVA的虚拟机,用于实现java的跨平台性。JRE:JAVA的运行环境,包含JVM和JAVA运行的的核心库。JDK:JAVA开发的工具包。其中包含JRE。javac.exe: 编译器 java.exe:解释器(用于运行)cmd 指令:javac命令(编译)后文件名要加后缀(.java)而java命令不用加后缀 布尔常量: 只有两种值true和false 空常量: ...
2019-10-09 21:21:37 94
原创 ZY的JAVA学习DAY1
ZY的JAVA学习DAY1一、命令提示符(cmd)启动: Win+R进入文件夹: cd 文件夹名称进入多级: cd 文件夹\文件夹1\文件夹2返回上一级: cd …直接回根目录: cd...
2019-10-08 22:54:29 123
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人