自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(78)
  • 资源 (1)
  • 收藏
  • 关注

原创 原型和原型链

相关概念显式原型:每个函数都有一个prototype属性,默认指向一个空的Object对象(原型对象)隐式原型:每个实例对象有一个__proto__属性,即隐式原型,指向其构造函数显式原型的值。函数中所有实例对象自动拥有原型中的属性方法。原型对象中有一个属性constructor,指向函数对象。内存结构分析:原型对象就相当于一个公共的区域,所有同一个类的实例都可以访问到这个原型对象,通过__proto__,当我们访问对象的一个属性或者方法时,会先在自身中寻找,如果找到直接使用,未找到的话会继

2020-09-14 16:02:51 146

原创 iconfont阿里巴巴矢量图标库的使用

官方网站:https://www.iconfont.cn选择图标首先使用GitHub或者微博登录官网,搜索选择自己需要的图标,将其加入购物车中,再添加到自己项目里。导入图标选好图标后,将其下载自己的项目路径下:建议解压到单独的文件夹下。使用可以点击官网的使用帮助学习如何使用,这里只介绍web端使用中的Unicode使用方法:步骤:在样式文件夹下建立一个font.css文件,里面的url需要换成自己的路径:在html文件中连接该css文件:在需要添加图标的位置添加Unicod

2020-07-30 15:45:51 359

原创 栈和队列相关算法题(Java)

所用示例均出自力扣https://leetcode-cn.com/用队列实现栈思路:创建两个队列,一个用于输入in,一个用于输出out。添加的时候将数据加到in中,然后将out中的数据都加到in中,此时in队列的头就是刚压入的数。再将in, out互换,保证压入队列为空。对输出队列进行poll(),peek()等操作。补:队列的相关操作add 增加一个元索 如果队列已满,则抛出一个IIIegaISlabEepeplian异常remove

2020-07-23 11:06:42 388

原创 栈的相关操作

简介:栈是一个先入后出的有序列表,限制线性表中元素的插入和删除都只能在线性表的同一端进行的一种特殊线性表。应用场景:子程序的调用,递归调用,表达式的转换,二叉树的遍历,深度优先搜索…数组模拟栈:思路:定义一个top表示栈顶,初始化为-1;入栈:当有数据加入栈时,top++, stack[top]=data;出栈:int value = stack[top]; top–; return value;//定义一个 ArrayStack 表示栈class ArrayStack { priva

2020-07-22 20:36:18 126

原创 mysql安装和相关问题

win10安装数据库:https://blog.csdn.net/yahuikiki/article/details/90738837连接数据库时出现时区问题,增加一个时区的配置即可:解决:String url=“jdbc:mysql://localhost:3306/demo?serverTimezone=GMT”JDBC连接Mysql时警告 —— Establishing SSL connection without server’s identity verification is

2020-07-22 12:40:06 195

原创 链表经典算法题(Java)

求单链表中有效节点的个数(如果有头结点,不统计头结点)public static int getLenth(Node head){ if (head.next == null) { return 0; } int lenth = 0; //让辅助指针指向头结点的下一个,就没有统计头结点 Node temp = head.next; while(temp != null){

2020-07-22 10:15:07 454

原创 双向链表的相关操作

双向链表简介:双向链表是包含向前指针的单链表,可以向前向后查找;单链表删除时需要借助辅助节点temp,而双向链表可以自我删除。双向链表的应用实例遍历:和单链表相同,只是可以向前,也能向后;添加:默认添加到链表最后;先找到最后一个节点temp.next = newNode;newNode.pre = temp; public void add(HeroNode2 heroNode){ //因为head节点不能动,需要一个辅助变量遍历temp He

2020-07-21 14:26:41 92

原创 单链表的相关操作

简介:链表是有序的列表链表是以节点的方式进行存储,链式存储;每个节点包含data域和next域(指向下一个节点);链表的各个节点不一定是连续存储;链表分带头节点的链表和没有头节点的链表(头节点不存放数据,作用就是表示单链表头)。单链表的应用实例:添加(创建):创建一个head头节点,作用就是表示单链表的头每添加一个节点就将其加到链表的最后遍历:因为头节点不能动,创建一个辅助指针temp进行遍历直到temp.next为空,即到了最后一个节点,结束遍历,否则将下一个的位置赋

2020-07-21 09:18:37 71

原创 数组模拟队列

队列介绍:队列是一个有序列表,可以用数组或者链表来实现;遵循先入先出的原则。数组模拟队列:队列本质是有序列表,若使用数组结构来存储队列的数据,则需要声明两个指针和一个最大容量:front,rear,MaxSize.front及rear分别记录队列前后端的下标,front指向队列第一个数据前一个的位置,rear指向队列中最后一个数字的位置。front会随着数据输出而改变,而rear则是随着数据输入而改变当我们将数据存入队列时称为”addQueue”,addQueue的处理需要有两个步骤:1)将

2020-07-20 18:04:23 58

原创 剑指offer——67剪绳子(Python)

【题目】给你一根长度为n的绳子,请把绳子剪成整数长的m段(m、n都是整数,n>1并且m>1,m<=n),每段绳子的长度记为k[1],…,k[m]。请问k[1]x…xk[m]可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。【思路】第一种方法是暴力递归法,不断的去判断前一次所有的剪法中乘积最大的剪法,Python的递归深度有限制。不建议采取此方法,太多的重复计算。【代码】class Solution: def fu

2020-06-29 21:08:45 113

原创 剑指offer——64滑动窗口的最大值(Python)

【题目】给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3,[4,2,6],2,5,1}, {2,3,4,[2,6,2],5,1}, {2,3,4,2,[6,2,5],1}, {2,3,4,2,6

2020-06-29 18:39:28 2251

原创 剑指offer——63数据流中的中位数(Python)

【题目】如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数【思路】本题考察的应该是小顶堆和大顶堆,但是下面的python代码调用了一个排序函数,算取巧了,以后会用java实现堆的解决方法。【代码】class Solution: def __init__(self):

2020-06-29 15:44:36 2322

原创 剑指offer——48不用加减乘除做加法(Python)

【题目】写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。【思路】本题考察的与运算,异或运算和进位符,题解中python的调用sum()方法就没写了。下面的代码运行超时,但思路是对的。先将两个数异或运算,相当于二进制每一位相加,不考虑进位,按位与之后左移一位得到进位,再将两数相加,直到进位为0,输出两数的和。【代码】class Solution: def Add(self, num1, num2): # write code here

2020-06-29 14:42:25 95

原创 剑指offe——61序列化二叉树(Python)

【题目】请实现两个函数,分别用来序列化和反序列化二叉树二叉树的序列化是指:把一棵二叉树按照某种遍历方式的结果以某种格式保存为字符串,从而使得内存中建立起来的二叉树可以持久保存。序列化可以基于先序、中序、后序、层序的二叉树遍历方式来进行修改,序列化的结果是一个字符串,序列化时通过 某种符号表示空节点(#),以 ! 表示一个结点值的结束(value!)。二叉树的反序列化是指:根据某种遍历顺序得到的序列化字符串结果str,重构二叉树。例如,我们可以把一个只有根节点为1的二叉树序列化为"1,",然后通过自己的

2020-06-29 14:05:23 738

原创 剑指offer——二叉搜索树的第K个节点(Python)

【题目】给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。【思路】结合中序遍历和二叉搜索树的性质(二叉搜索树的左子树小于根节点,右子树大于根节点,所以中序遍历就是从小到大排好序的)得出中序序列后,输出第k个即可。【代码】class Solution: # 返回对应节点TreeNode def KthNode(self, pRoot, k): global res res

2020-06-28 22:13:05 130

原创 剑指offer——60把二叉树打印成多行(Python)

【题目】从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。【思路】具体思路参考59题,本题不需要对偶数行进行翻转。【题目】class Solution: # 返回二维列表[[1,2],[4,5]] def Print(self, pRoot): if not pRoot: return [] nodeStack=[pRoot] result=[] while nodeStack:

2020-06-28 21:25:19 125

原创 剑指offer——59按之字形顺序打印二叉树(Python)

【题目】请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。【思路】本题利用两个栈进行处理(没有用到栈的特点),一个存放当前层的节点,一个存放下一层的节点,在设置一个变量判断当前层数是偶数层还是奇数层,是偶数层的话将其翻转再添加到结果中,奇数层,直接添加。处理完一层后,将下一层的节点传到当前层的中,下一层设置为空。【代码】class Solution: def Print(self, pRoot):

2020-06-28 20:56:25 84

原创 剑指offer——58对称二叉树(Python)

【题目】请实现一个函数,用来判断一棵二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。【思路】若一颗二叉树是对称二叉树,其左右子树也是对称二叉树,其左子树的右子树等于其右子树的左子树(可画图辅助理解)递归进行处理,关键是边界条件的判断。【代码】class Solution: def isSymmetrical(self, pRoot): # write code here def fun(p1,p2): i

2020-06-28 18:39:06 1219

原创 剑指offer——57二叉树的下一个节点(Python)

【题目】给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。【思路】首先明确一点中序遍历顺序是左根右,所以先判断当前节点有没有右子树,如果有右子树,下一个节点是右子树最左边的节点。如果没有右子树,就找第一个当前节点是父节点左孩子的节点,返回其父节点。(注意,这里的next指的是父节点),循环调节就是遍历到根节点。【代码】class Solution: def GetNext(self, pNode):

2020-06-28 16:27:52 69

原创 剑指offer——56删除链表中的重复数字(Python)

【题目】在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5【思路】首先定义一个空的链表头,防止碰到前两个节点相同的情况,然后用两个指针进行判断。当last指针当前的值和last.next的值相同时,就用一个循环语句,找到连续相同的值,找到出现第一个不相同的值,然后将pre指针的next指向这个值,同时last指针指向这个值的后一个,如果没

2020-06-27 14:47:33 276

原创 剑指offer——53表示数值的字符串(Python)

【题目】请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100",“5e2”,"-123",“3.1416"和”-1E-16"都表示数值。 但是"12e",“1a3.14”,“1.2.3”,"±5"和"12e+4.3"都不是。【思路】主要是一些符号出现的个数和位置的判断,具体看代码注释。【代码】class Solution: # s字符串 def isNumeric(self, s): # write code here #定

2020-06-26 21:18:22 170

原创 剑指offer——52正则表达式匹配(Python)

【题目】请实现一个函数用来匹配包括’.‘和’*‘的正则表达式。模式中的字符’.‘表示任意一个字符,而’'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"abaca"匹配,但是与"aa.a"和"aba"均不匹配【思路】本题采用递归的方法逐个比对字符串和模式中字符,首先分成两种情况,看第二个字符是不是’*’。)当第二个字符不是’*‘时:(1)判断字符串第一个字符和模式的第一个字符是否相等(注意:模式第一个字符为’.‘也可

2020-06-26 19:52:48 122

原创 剑指offer——51构建乘积数组(Python)

【题目】给定一个数组A[0,1,…,n-1],请构建一个数组B[0,1,…,n-1],其中B中的元素B[i]=A[0]A[1]…*A[i-1]A[i+1]…*A[n-1]。不能使用除法。(注意:规定B[0] = A[1] * A[2] * … * A[n-1],B[n-1] = A[0] * A[1] * … * A[n-2];)【思路】可以先将A中元素先乘起来,然后依次除以A[i]即可得到B[i],但本题不允许使用除法,所以分成两部分来做,现在i前面的相乘,再乘以i后面的元素。【代码】class S

2020-06-26 12:37:16 108

原创 剑指offer——39平衡二叉树(Python)

【题目】输入一棵二叉树,判断该二叉树是否是平衡二叉树。在这里,我们只需要考虑其平衡性,不需要考虑其是不是排序二叉树平衡树(Balance Tree,BT) 指的是,任意节点的子树的高度差都小于等于1。【思路】本题在做完38题的基础上很容易解出,判断左子树和右子树的深度差是否大于1,大于1则返回False,若小于则判断其子节点的左右子树的深度是否都是小于等于的,一个递归操作。【代码】class Solution: def IsBalanced_Solution(self, pRoot):

2020-06-22 15:50:53 92

原创 剑指offer——38二叉树的深度(Python)

【题目】输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。【思路】求二叉树的深度可以通过求其子树的深度加1即可,在左子树和右子树子树中选择最大的。【代码】# -*- coding:utf-8 -*-# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right

2020-06-22 15:37:11 106

原创 剑指offer——50数组中重复的数字(Python)

【题目】在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。【思路】建立一个字典,value是数组中数字出现的次数,出现了两次(即字典中有这个数)则将其赋给duplication[0],返回True.【代码】class Solution: # 这里要特别注意~找到任意重复的一个值并赋

2020-06-18 12:01:28 151

原创 剑指offer——49把字符串转化成整数(Python)

【题目】将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0。【思路】本题先建了一个只含数字和正负号的数组,对字符串逐个比对,如果第一个是+,最后答案就乘1,如果是-,最后结果就乘-1,有元素不在新建的数组里,返回0,逐个乘10和下一个数字相加。弊端就是正负号出现在中间无法解决。【代码】class Solution: def StrToInt(self, s): # write code here if

2020-06-18 10:52:58 135

原创 剑指offer——45扑克牌顺子(Python)

【题目】LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张_)…他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体育彩票,嘿嘿!!“红心A,黑桃3,小王,大王,方片5”,“Oh My God!”不是顺子…LL不高兴了,他想了想,决定大\小 王可以看成任何数字,并且A看作1,J为11,Q为12,K为13。上面的5张牌就可以变成“1,2,3,4,5”(大小王分别看作2和4),“So Lucky!”。LL决定去买体育彩票啦。 现在

2020-06-18 10:10:44 94

原创 剑指offer——44 翻转单词序列(Python)

【题目】牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?【思路】【代码】...

2020-06-17 12:59:45 271

原创 剑指offer——43左旋转字符串(Python)

【题目】汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!【思路】本题考察的是翻转字符串,就是如何从AB->BA,可以先将A翻转,再将B翻转,最后将翻转后的AB一起翻转,即通过三次翻转得出最后的字符串。因为Python中string的值不能通过下标的改变而改变,所

2020-06-17 00:24:19 114

原创 剑指offer——42和为S的两个数字(Python)

【题目】输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。【思路】这题有一个思维误区,很多人想着怎么去得到两个乘积最小,这是一个递增数列,间隔最大的两个数乘积最小,相通这点后就较为简单,从两端往中间夹,相加等于tsum时输出这两个数,若两端的和大于tsum,说明太大了,右端点往左移动一位,若小于,则左端点往右移动一位。【代码】class Solution: def FindNumbersWithSum(self, a

2020-06-16 21:24:06 122 1

原创 剑指offer——41和为S的连续正数序列(Python)

【题目】小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck!【思路】下面第一个代码未能通过所有测试用例,因为没对B 进行排序,我自己想的,越写越复杂就不想写了。思路不建议看,写的乱七八糟的,就是,先判断有几个正数相加可

2020-06-16 20:19:22 114

原创 剑指offer——44求1+2+3+...+n(Python)

【题目】求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。【思路】一个投机取巧的方法就是使用pow()函数加上移位符,实现等差数列求和公式。【代码】import mathclass Solution: def Sum_Solution(self, n): # write code here res = int((math.pow(n, 2) +n))>>1

2020-06-03 01:42:36 588

原创 剑指offer——37数字在排序数组中出现的次数(Python)

【题目】统计一个数字在排序数组中出现的次数。【思路】 简单的方法就是建一个字典存放数字出现的字数,最后输出k出现的次数,或者直接遍历数组,逐个和k比较,最后输出。【代码】class Solution: def GetNumberOfK(self, data, k): # write code here if data == None or k == None or k not in data: return 0 num =

2020-06-03 00:16:26 102

原创 剑指offer——32把数组排成最小的数(Python)

【题目】输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。【思路】这题可以转化为一个优先级的问题(个人理解),就是将第一个数A和后面的数x依次比较优先级,Ax>xA说明x应该放在A前面然后依次按照优先级排序,把最高的放在第一位,这样就转化为一个排序的问题,排完序后按照将其连成一个字符串,即可输出。【代码】class Solution: def PrintMinNu

2020-05-30 01:35:57 183

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

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

2020-05-29 23:35:03 67

原创 剑指offer——29最小的k个数(Python)

【题目】输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。【思路】主要考查的是排序算法,先将数组升序排序,取出前k个即可,注意边界条件。【代码】class Solution: def GetLeastNumbers_Solution(self, tinput, k): # write code here if tinput == None or k == None or k > len

2020-05-29 22:51:43 113

原创 剑指offer——19顺时针打印矩阵(Python)

【题目】输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下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,10.【思路】【代码实现】...

2020-05-29 16:21:26 99

原创 递归与回溯

递归特点:可以将一个大规模的问题不断的变小,然后进行推导的过程,是一种调用自身函数的算法。解题步骤:判断当前情况是否非法,如果非法就立即返回,这一步也被称为完整性检查(Sanity Check)。例如,看看当前处理的情况是否越界,是否出现了不满足条件的情况。通常,这一部分代码都是写在最前面的。判断是否满足结束递归的条件。在这一步当中,处理的基本上都是一些推导过程当中所定义的初始情况。将问题的规模缩小,递归调用。在归并排序和快速排序中,我们将问题的规模缩小了一半,而在汉诺塔和解码的例子中,我们将问

2020-05-29 12:43:53 242

原创 排序

冒泡排序具体操作:每一轮,从杂乱无章的数组头部开始,每两个元素比较大小并进行交换,直到这一轮当中最大或最小的元素被放置在数组的尾部,然后不断地重复这个过程,直到所有元素都排好位置。其中,核心操作就是元素相互比较。代码示例:void sort(int[] nums) { //定义一个布尔变量 hasChange,用来标记每轮遍历中是否发生了交换 boolean hasChange = true; //每轮遍历开始,将 hasChange 设置为 false for

2020-05-28 15:19:40 84

人体姿态估计相关论文笔记2

目前很多姿态估计方法基于人体检测器的检测结果,但是人体检测器在定位和识别方面的小错误无法避免,这会导致单人姿态估计器失败。该文提出来一种新颖的区域多人姿态估计框架,可以在人体边界框不精确的时候进行姿态估计。该框架由Symmetric Spatial Transformer Network(对称空间变换网络)、Parameter Pose Non-Maximum-Suppression(非最大抑制姿态参数)、Pose-Guided Proposal Generator(姿态引导提议生成器)三部分组成,可以处理不准确的边界框和冗余检测。

2018-12-18

空空如也

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

TA关注的人

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