自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Dragon_Prince的博客

学习学习学习

  • 博客(52)
  • 资源 (3)
  • 收藏
  • 关注

原创 MySQL: 3.MySQL数据类型

MySQL数据类型文章目录MySQL数据类型一、MySQL数据类型简介二、数值类型1.整数类型2.小数类型三、日期和时间类型`YEAR`类型`TIME`类型`DATE`类型`DATETIME`类型`TIMESTAMP`类型四、字符串类型`CHAR`和`VARCHAR`类型`TEXT`类型`ENUM`类型`SET`类型五、二进制类型`BIT`类型`BINARY`和`VARBINARY`类型`BLO...

2020-02-12 18:34:29 1355

原创 剑指offer:1.二维数组的查找

题目描述在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。解题思路从右上角往左下角查找。代码Python# -*- coding:utf-8 -*-class Solution: # array 二维列表 def Fin...

2020-02-06 13:51:04 120

原创 Python多版本共存 创建虚拟环境及安装opencv,tensorflow

1. Python多版本共存首先将需要的Python版本都安装上,不同Python版本安装的时候会建立不同的文件夹,装好以后就去各个版本的Python文件夹下将Python.exe复制一份然后改个名字,比如python35.exe,python37.exe。然后再到各个版本的Python文件夹的Scripts文件夹下将pip.exe也进行同样的操作。再去环境变量里面把自己想要的默认版本的Pyth...

2018-09-21 12:50:14 1669

原创 Win10搭建Anaconda(Python 3.6.4) + OpenCV + PyQt5 + PyCharm(附带安装Eric6)

一、安装Anaconda这个没什么好说的,去官网下载安装就是了,注意勾选添加到环境变量。默认已经装了pip,后面的东西都用pip来安装,这里按照系统中只有Anaconda自带的Python3来写,如果有2.x版本的Python的话要注意把pip换成pip3。在命令行输入python,得到下图结果就说明Python安装成功了。可以先把Anaconda的源换成国内的,不然下载很慢,参见这里换成清华的源...

2018-03-26 21:14:57 2834

原创 剑指offer:40.数组中只出现一次的数字

40.数组中只出现一次的数字题目描述一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。 解题思路下面的思路来自《剑指offer》。将问题转化为只有一个数字只出现了一次。首先考虑数组中只有一个数字只出现了一次,只需要将数组中每个数字进行异或,最后得到的数字就是那个只出现了一次的数字,因此其他数字都是出现两次的,在异或的过程中被消掉了。然后问题就变成如何将数组拆分成两组(不一定要把两组数字拷贝到新的数组中),每组中都只有一个数字只出现一次

2021-01-19 21:17:13 103

原创 剑指offer:39.平衡二叉树

39.平衡二叉树题目描述输入一棵二叉树,判断该二叉树是否是平衡二叉树。 解题思路平衡二叉树:平衡二叉树(Balanced Binary Tree)具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。平衡二叉树的常用实现方法有红黑树、AVL、替罪羊树、Treap、伸展树等。 最小二叉平衡树的节点的公式如下F(n)=F(n−1)+F(n−2)+1F(n)=F(n-1)+F(n-2)+1F(n)=F(n−1)+F(n−2)+1这个类似于

2021-01-19 21:14:38 109

原创 剑指offer:38.二叉树的深度

38.二叉树的深度题目描述输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 解题思路下面的思路来自《剑指offer》。思路一,递归遍历所有路径,类似于《24.二叉树中和为某一值的路径》的方法。可以创建一个全局变量用于保存当前最长路径,再创建一个全局变量用于保存当前路径的深度,然后从根节点开始向下遍历整棵树,采用前序遍历方法,每次遍历到一个结点就把当前路径深度+1,递归完毕回退的时候就把当前路径深度-1,如果是

2021-01-19 21:10:25 167

原创 剑指offer:37.数字在排序数组中出现的次数

37.数字在排序数组中出现的次数题目描述统计一个数字在排序数组中出现的次数。 解题思路下面的思路来自《剑指offer》。思路一,从头到尾遍历统计,复杂度O(n)O(n)O(n)。思路二,折半查找,前后统计。既然是排序的数组,那就比较好办了,只需要找到这个数的位置,然后向前和向后统计一下数量就行,复杂度O(n)O(n)O(n)。思路三,找到第一个k和最后一个k的位置。利用二分查找法查找第一个k的位置,然后查找最后一个k的位置,有了两个位置就可以知道数字的数量了。复杂度O(log

2021-01-19 21:09:42 89

原创 剑指offer:36.两个链表的第一个公共结点

36.两个链表的第一个公共结点题目描述输入两个链表,找出它们的第一个公共结点。 解题思路下面的思路来自《剑指offer》。如果两个链表有公共结点,那么从这个公共结点开始,以下的全都是一样的。思路一,利用两个栈,从两个链表的底部开始对比。先将两个链表的所有结点依次入栈,然后从链尾开始对比,直到两个结点地址不相等。思路二,砍头同步遍历法。先对两个链表分别进行遍历,得到两个链表的长度,把长的那个链表头部多的几个结点砍掉(从长的链表上先走几步),这样两个链表就等长了,然后两个链表一起

2021-01-19 21:08:54 81 1

原创 剑指offer:35.数组中的逆序对

35.数组中的逆序对题目描述在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007输入描述:题目保证输入的数组中没有的相同的数字。数据范围:​ 对于%50的数据,size<=10^4;​ 对于%75的数据,size<=10^5;​ 对于%100的数据,size<=2*10^5示例1输入:1,2,3,4,5,6,7,

2021-01-19 21:07:55 56

原创 剑指offer:34.第一个只出现一次的字符

34.第一个只出现一次的字符题目描述在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写)。 解题思路下面的思路来自《剑指offer》。思路一,笨办法。遍历每个字符,每个字符都和所有的字符对比。思路二,哈希表(字典,map)。第一次遍历的时候统计每个字符出现的次数,第二次遍历的时候查看字符串中每个字符出现的次数是否等于1。如果不能用标准库中的map的话,可以用数组来

2021-01-19 21:07:05 115

原创 剑指offer:33.丑数

33.丑数题目描述把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。 解题思路下面的思路来自《剑指offer》。首先找丑数的规律,质数就是除了1和它本身以外没有其他的因子,丑数就是除了2,3,5以外没有其他的质因子,也就是说,如果一个数是丑数,那么它一定是由2,3,5相乘得到的,即一定可以写成这样的形式:p=2x∗3y∗5zp = 2^{x} * 3^

2021-01-19 21:05:28 70

原创 剑指offer:32.把数组排成最小的数

32.把数组排成最小的数题目描述输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。 解题思路下面的思路来自《剑指offer》其实本质上还是排序算法,只不过排序的时候比大小的方式不一样了。将a和b转换成字符串以后,决定哪个应该放到前面的时候无非就两种结果,一种是ab,一种是ba,因此只需要比较ab和ba的大小就能判定a和b的大小。排序的时候使用快速排序就行

2021-01-19 21:03:52 86

原创 剑指offer:31.整数中1出现的次数(从1到n整数中1出现的次数)

31.整数中1出现的次数(从1到n整数中1出现的次数)题目描述求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数(从1 到 n 中1出现的次数)。 解题思路思路一,笨办法,每个数依次判断。判断一个数字中有几个1可以通过不停和10取余数即n%10,判断余数

2021-01-18 16:04:48 86

原创 剑指offer:30.连续子数组的最大和

30.连续子数组的最大和题目描述HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。给一个数组,返回它的最大连续子序列的和,你会不会被他忽悠住?(子向量的长度至少是1)。 解题思路下面

2021-01-18 16:03:58 75

原创 剑指offer:29.最小的K个数

29.最小的K个数题目描述输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。 解题思路下面的思路来自《剑指offer》思路一,快速排序后取前k位,写个快速排序还不是分分钟的事?看一下代码会发现实际上并不需要完全排序完毕。这种方法比较快,但是会对输入数组进行修改,如果要求不能修改输入数组的话这种方法就不好用了。思路二,用一个大小为k的容器(最大堆或者红黑树),依次读取数据,如果比当前容器最大值小的话,就

2021-01-18 16:03:14 88

原创 剑指offer:28.数组中出现次数超过一半的数字

28.数组中出现次数超过一半的数字题目描述数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。 解题思路下面的思路来自《剑指offer》,思路的名字是我自己起的。思路一,排序后取中位数。首先进行快速排序,如果存在出现次数超过数组长度一半的数,那么这个数一定是排序以后最中间的数,即输入数组的中位数。然后再判断这个数字出现的次数

2021-01-18 16:02:09 120

原创 剑指offer:27.字符串的排列

27.字符串的排列题目描述输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。输入描述:输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。 解题思路下面的思路来自《剑指offer》。可以把问题转换为,第一个字符固定,求后面的字符串的所有排列,使用递归的方式解决;思想如下面的图所示(结合代码看更容易理解):首先分别

2021-01-18 15:46:50 95

原创 剑指offer:26.二叉搜索树与双向链表

26.二叉搜索树与双向链表题目描述输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。 解题思路下面的思路来自《剑指offer》将二叉搜索树转换成双向链表即当前结点的左指针指向左子树的最大结点,右指针指向右子树的最小节点,如下图所示:因此,只需要使用中序遍历的顺序进行转换(中序遍历一棵二叉搜索树即是从小到大输出),然后用一个指针pLastNode指向已经转换的链表的最大结点(尾结点)即可,刚开始时这个指针为NUL

2021-01-18 15:45:25 78

原创 剑指offer:25.复杂链表的复制

25.复杂链表的复制题目描述输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空) 解题思路下面的思路来自《剑指offer》,使用分治法,将整个任务分成几个步骤完成,复杂问题简单化。总共分为三步,每个步骤可以单独封装成一个函数完成:遍历链表,复制每个结点,如复制结点A得到A1,将结点A1插到结点A后面;重新遍历链表

2021-01-18 15:42:52 82

原创 剑指offer:24.二叉树中和为某一值的路径

24.二叉树中和为某一值的路径题目描述输入一颗二叉树的根节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前) 解题思路思路一,递归,直接看代码可能更好理解一点,很巧妙。创建一个结果嵌套列表全局变量,和一个临时列表全局变量。从根节点一路往下递归,每次将结点加入临时列表,到底部时如果总和满足要求就将临时列表加入结果列表。每次返回之前将压入的结点弹出。&

2021-01-18 15:40:08 86

原创 剑指offer:23.二叉搜索树的后序遍历序列

23.二叉搜索树的后序遍历序列题目描述输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes, 否则输出No。假设输入的数组的任意两个数字都互不相同。 解题思路这种判断是不是某种遍历结果的题目一般都是通过依次划分左右子树,然后递归下去的方式。要先想这种遍历方式的最显著特点,后序遍历的话,序列的末尾一定是根,然后这又是二叉搜索树(BST),因此整个序列中,第一个比根大的结点一定是右子树中打印的第一个结点i,结点i左边的所有元素都是左子树,都需要比根小(已经

2021-01-18 15:38:57 120

原创 剑指offer:22.从上往下打印二叉树

22.从上往下打印二叉树题目描述从上往下打印出二叉树的每个节点,同层节点从左至右打印。 解题思路So easy!通过队列就可以实现,先将根结点入队,然后每次从队列取出一个结点并输出,将结点的左右子结点入队。 代码思路一,也可以在循环外面把根结点入队,然后输出和左右子结点入队的操作就可以在循环中统一完成了。这样代码会简洁一点,但是多了一次入队出队操作。/*struct TreeNode { int val; struct TreeNode *left;

2021-01-18 15:28:27 80

原创 行式存储和列式存储的区别

文章目录存储方式对比优缺点对比简单对比行式存储行式存储的优点行式存储的缺点列式存储列式存储的优点列式存储的缺点适用场景对比参考存储方式对比行式存储就是每一行的所有数据存在一个block中,各个block之间连续存储;列式存储就是每一列的所有数据存在一起,不同列之间可以分开存储。MySQL中的infobright存储引擎是列式存储,InnoDB和MyISAM存储引擎是行式存储。列式存储是非...

2020-03-16 19:43:12 1763

原创 动态规划 Shopee的办公室(二)

动态规划 Shopee的办公室(二)题目描述题目来源:牛客网shopee的办公室非常大,小虾同学的位置坐落在右上角,而大门却在左下角,可以把所有位置抽象为一个网格(门口的坐标为0,0),小虾同学很聪明,每次只向上,或者向右走,因为这样最容易接近目的地,但是小虾同学不想让自己的boss们看到自己经常在他们面前出没,或者迟到被发现。他决定研究一下如果他不通过boss们的位置,他可以有多少种走法?...

2020-03-09 17:44:18 225

原创 剑指offer:21.栈的压入、弹出序列

https://github.com/PhillipHuang2017/SwordOffer21.栈的压入、弹出序列题目描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。...

2020-02-18 19:31:35 115

原创 剑指offer:20.包含min函数的栈

https://github.com/PhillipHuang2017/SwordOffer20.包含min函数的栈题目描述定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1)O(1)O(1))。​解题思路思路一,设置两个栈,一个栈stack_data用于正常保存元素,另一个栈stack_min用于保存最小元素,如果新push的...

2020-02-17 15:44:18 107

原创 剑指offer:19.顺时针打印矩阵

https://github.com/PhillipHuang2017/SwordOffer19.顺时针打印矩阵题目描述输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字)。例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11...

2020-02-17 15:42:02 121

原创 剑指offer:18.二叉树的镜像

https://github.com/PhillipHuang2017/SwordOffer18.二叉树的镜像题目描述操作给定的二叉树,将其变换为源二叉树的镜像。输入描述:二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8...

2020-02-16 17:36:30 98

原创 剑指offer:17.树的子结构

https://github.com/PhillipHuang2017/SwordOffer17.树的子结构题目描述输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)解题思路首先要搞清楚子树和子结构的区别:子树:如果B是A的子树,那么从A的某一个结点开始,一直到叶子结点要全都和B的结点相同(一直到根节点);子结构(本题):只要B是A里...

2020-02-16 17:34:04 169

原创 剑指offer:16.合并两个排序的链表

https://github.com/PhillipHuang2017/SwordOffer16.合并两个排序的链表题目描述输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。解题思路迭代思想,两个指针*next1,*next2分别指向两个链表的下一个结点,一个指针*p指向已经合并的链表的最后一个结点,比较next1和next2的val,把...

2020-02-16 17:32:35 99

原创 MySQL: 5.约束

约束文章目录约束一、主键约束 `PRIMARY KEY`创建表时设置主键约束(1)定义列时设置主键约束(2)定义完所有列之后设置主键约束(3)创建表时设置复合主键修改表时添加主键约束修改主键约束二、外键约束 `FOREIGN KEY`在创建表时设置外键约束在修改表时添加外键约束删除外键约束三、唯一约束 `UNIQUE`定义列时添加唯一约束修改表时添加唯一约束删除唯一约束四、检查约束 `CHECK...

2020-02-16 17:29:28 352

原创 剑指offer:15.反转链表

https://github.com/PhillipHuang2017/SwordOffer15.反转链表题目描述输入一个链表,反转链表后,输出新链表的表头。解题思路思路一,一路向下,两个指针,依次遍历结点,先保存下一个结点地址,然后将当前结点的指针反转。很简单,看代码就懂了,但是一定要注意避免出现断链(即忘了先保存下一个结点地址)和环路(即忘记将第一个结点的next改为NULL...

2020-02-15 20:13:05 131

原创 剑指offer:14.链表中倒数第k个结点

https://github.com/PhillipHuang2017/SwordOffer14.链表中倒数第k个结点题目描述输入一个链表,输出该链表中倒数第k个结点。解题思路思路一,简单思路,先遍历整个链表,获得链表的长度,然后求出倒数第k个结点的下标,然后再遍历过去。思路二,设置两个指针,见下面的图,一目了然,两种方法其实复杂度差不多,实际上都是指针过两遍:设置...

2020-02-15 20:11:28 122

原创 MySQL: 4.数据表相关操作

数据表相关操作文章目录数据表相关操作1.创建数据表 `CREATE TABLE`创建表 `CREATE TABLE`查看表结构(表定义) `DESCRIBE`或`DESC`查看创建表语句 `SHOW CREATE TABLE`2.修改数据表(含修改字段) `ALTER TABLE`基本语法添加字段 `ADD`修改字段数据类型 `MODIFY`删除字段 `DROP`修改字段名称和数据类型 `CHA...

2020-02-15 20:08:07 255

原创 剑指offer:13.调整数组顺序使奇数位于偶数前面

https://github.com/PhillipHuang2017/SwordOffer13.调整数组顺序使奇数位于偶数前面题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。解题思路方法一,类似于插入排序,依次检测,遇到奇数就把奇数调到前面去,前面的偶...

2020-02-14 14:38:40 124

原创 剑指offer:12.数值的整数次方

https://github.com/PhillipHuang2017/SwordOffer12.数值的整数次方题目描述给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方保证base和exponent不同时为0解题思路方法一,笨办法,累乘第一种思路是常规思路,也是笨办法,就是累乘,最容易想到(方法一),但是这种方法很慢...

2020-02-13 15:14:09 135

原创 剑指offer:11.二进制中1的个数

https://github.com/PhillipHuang2017/SwordOffer11.二进制中1的个数题目描述输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。解题思路负数用补码表示,所以运算方法和正数一样,无需做特殊考虑。这里用到了一个很巧妙的运算方式,即n & (n - 1),这个运算表示将最右边的1变成0,解释见下面因为n-1表示将n最右...

2020-02-12 18:43:21 130

原创 剑指offer:10.矩形覆盖

https://github.com/PhillipHuang2017/SwordOffer10.矩形覆盖题目描述我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?解题思路首先分析简单情况: f(1) = 1, f(2) = 2。当n >= 3时,先看第一个小矩形的摆放方式,如果第一个小矩形是横着...

2020-02-12 18:41:15 142

原创 剑指offer:9.变态跳台阶

https://github.com/PhillipHuang2017/SwordOffer9.变态跳台阶题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。解题思路和简单版跳台阶不同的是,现在一次可以跳1~n级,因此最终跳到第n级台阶时,最后一跳就有n种可能,分别是从第0级,第1级…第n-1级跳上来,得出:f(...

2020-02-09 13:42:37 146

windows常用快捷键

这是windows系统上面比较常用的一些快捷键,还是比较方便的

2018-10-25

Learn Python The Hard Way(笨办法学python) 原书代码

Learn Python The Hard Way(笨办法学python) 原书代码

2018-10-25

Machine Learning Yearning Draft 机器学习训练秘籍 吴恩达 中文版.pdf

Machine Learning Yearning Draft 机器学习训练秘籍 吴恩达,中文版,吴恩达新书

2018-10-25

空空如也

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

TA关注的人

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