- 博客(58)
- 收藏
- 关注
原创 【剑指 Offer 03. 数组中重复的数字】【Python】
偷懒了两天。本来想放弃刷题了,感觉不出进步,不过和朋友聊天后,还是决定继续,因为不刷题的时间被我拿去也没做什么有益的事情,还是被拿来刷手机了,所以继续刷吧。今天这道题比较简单,我的想法也是哈希表,还是看了题解,降低了空间复杂度。class Solution: def findRepeatNumber(self, nums: List[int]) -> int: for i in range(len(nums)): if nums[i]==i:
2020-11-30 14:06:11
165
原创 【剑指 Offer 19. 正则表达式匹配】【Python】【动态规划】
这道题是困难的题目,也是力扣在剑指offer中动态规划类型的最后一题,拿到这道题思考之后,发现我是没有思路的,看了题解之后才知道用二维数组定义状态方程。力扣的题解和这个视频都讲的很仔细,也便于理解。视频的代码如下:class Solution: def isMatch(self, s: str, p: str) -> bool: mrow=len(s) ncol=len(p) dp=[[False for i in range(ncol+1)
2020-11-25 10:45:27
302
原创 【剑指 Offer 14- II. 剪绳子 II】【整数拆分】【Python】【动态规划】
剪绳子2和1的题目是一样的,只是2要求返回结果必须取余,要考虑大数越界。我16号的时候在力扣上做了剪绳子1,今天做2的时候已经完全没有记忆,看了力扣的题解也没记起来。看了16号的博客才发现原来当时是看了别人的视频写的,当时理解的就不太好,所以今天也不出所料的没想出来,就连看到代码也不知道自己为什么这样写。又去看了一遍视频重新理解了一下。class Solution: def cuttingRope(self, n: int) -> int: dp=[0 for _ in ra
2020-11-24 10:37:03
202
原创 【剑指 Offer 63. 股票的最大利润】【力扣刷题】【Python】【动态规划】
我的想法我的状态转移方程后面的部分没有总结出规律,看了题解才想到后面的一坨只要用第i天的价格减去前i-1天的最小值就可以。class Solution: def maxProfit(self, prices: List[int]) -> int: if not prices: return 0 dp=[0]*len(prices) dp[0]=0 for i in range(1,len(prices
2020-11-23 10:29:23
211
原创 【剑指 Offer 46. 把数字翻译成字符串】【剑指 Offer 10- II. 青蛙跳台阶问题】【198. 打家劫舍】【动态规划】
青蛙跳台阶,打家劫舍,字母相同编码三道题思路总结
2020-11-19 21:59:12
143
原创 【剑指 Offer 47. 礼物的最大价值】【力扣刷题】【Python】【动态规划】
class Solution: def maxValue(self, grid: List[List[int]]) -> int: for i in range(len(grid)): #行 for j in range(len(grid[0])): #列 if i==0 and j==0: continue elif i==0:
2020-11-17 10:40:01
112
原创 【剑指 Offer 14- I. 剪绳子】【力扣刷题】【Python】【动态规划】
class Solution: def integerBreak(self, n: int) -> int: dp = [0] * (n + 1) for i in range(2, n + 1): for j in range(i): dp[i] = max(dp[i], j * (i - j), j * dp[i - j]) return dp[n]具体讲解参考这个视频讲解视频.
2020-11-16 21:42:26
114
原创 【剑指 Offer 42. 连续子数组的最大和】【力扣刷题】【Python】【动态规划】
参考解答动态规划class Solution: def maxSubArray(self, nums: List[int]) -> int: for i in range(1,len(nums)): if nums[i-1]>0: nums[i]+=nums[i-1] return max(nums)
2020-11-13 15:00:37
134
1
原创 【剑指 Offer 10- I. 斐波那契数列】【力扣刷题】【Python】
我的想法看到题目的第一想法就是 递归求解,但是提交后超出时间限制class Solution: def fib(self, n: int) -> int: sumNum=0 if n==0: return sumNum elif n==1: sumNum=1 return sumNum else: return self.fib(n
2020-11-12 10:57:03
114
原创 【剑指 Offer 10- II. 青蛙跳台阶问题】【力扣刷题】【Python】【动态规划】
我的想法:斐波那契代码就不写了和昨天一样,不过我一开始没找到递归表达式,他是要考虑最后一次跳时不是一个台阶就是两个台阶。详细可以参考青蛙跳台阶动态规划的方法是我初次接触到,我明天学吧。...
2020-11-11 15:01:13
229
1
原创 【剑指 Offer 35. 复杂链表的复制】【力扣刷题】【Python】
class Node: def __init__(self, x: int, next: 'Node' = None, random: 'Node' = None): self.val = int(x) self.next = next self.random = random"""class Solution: def copyRandomList(self, head: 'Node') -> 'Node': new
2020-11-10 10:23:20
94
原创 【剑指 Offer 52. 两个链表的第一个公共节点】【力扣刷题】【Python】
力扣双指针class Solution: def getIntersectionNode(self, headA: ListNode, headB: ListNode) -> ListNode: a,b=headA,headB while a!=b: if a==None: a=headB else: a=a.next if
2020-11-06 16:10:24
211
原创 【剑指 Offer 18. 删除链表的节点】【力扣刷题】【Python】
我的想法:双指针遍历链表,判断结点的值是否为输入的值,若相等将该节点前一个结点指向后一个结点,返回新的链表。# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: def deleteNode(self, head: ListNode, val: int)
2020-11-05 11:03:15
204
1
原创 【剑指Offer 24. 反转链表】【力扣刷题】【Python】
方法一:多指针# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: def reverseList(self, head: ListNode) -> ListNode: pre=None cur=head
2020-11-04 16:38:15
135
原创 【剑指offer22链表中倒数第k个节点】【力扣刷题】【Python】
方法一:自己的想法+参考力扣# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: def getKthFromEnd(self, head: ListNode, k: int) -> ListNode: res=[]
2020-11-03 14:20:37
248
原创 【剑指offer6:从尾到头打印链表】【力扣刷题】【Python】
方法一堆栈# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: def reversePrint(self, head: ListNode) -> List[int]: stack=[] if not head: return [] while hea
2020-11-03 13:43:25
115
原创 【剑指offer17:打印从1到最大的n位数】【力扣刷题】【Python】
方法一class Solution: def printNumbers(self, n: int) -> List[int]: li=[] head=1 end=9*(10**(n-1))+1 while n>=1: for i in range(head,end): li.append(i) n-=1 head=li[
2020-11-02 10:39:23
140
原创 【剑指offer58:左旋转字符串】【力扣刷题:简单】【Python】
方法一:切片class Solution: def reverseLeftWords(self, s: str, n: int) -> str: return s[n:len(s)]+s[0:n]方法二:元组与join函数class Solution: def reverseLeftWords(self, s: str, n: int) -> str: newstr=[] for i in range(n,len(s)):
2020-11-02 09:47:01
805
原创 【顺序表和链表】【栈和队列】
栈先进后出顺序表实现栈(在尾部插入和弹出,时间复杂度为O(1))class stack(object): def __init__(self): self.__List = [] def push(self, item): return self.__List.append(item) def pop(self): return self.__List.pop() def size(self): re
2020-09-23 10:27:01
170
原创 【黑盒以及白盒测试】测试用例设计方法
1.测试用例的定义和组成。为了实现特定目的设计的有输入、执行步骤、预期结果的文档。用例ID,用例名称,所属项目模块,预置条件,测试数据,执行步骤,执行结果,优先级,重要级。2.测试方法的作用。帮助测试人员设计测试覆盖率高且不重复的测试用例。3.黑盒测试方法有哪些?等价类划分法,边界值法,判定表法,因果图法,正交实验法,状态迁移法,场景法4.等价类划分法适用场合:输入条件之间独立无组合关系作用:由于穷举法不可取设计步骤:1.需求分析,确认输入数据类型2.根据输入类型,划分有效等价类和无效
2020-09-18 15:41:46
2633
原创 排序算法总结
冒泡排序1.原理:比较相邻的两个元素大小,若前者大于后者则交换位置。2.思路:数组a,长度为n(1)比较第1轮:第一个元素a[1]和第二个元素a[2]相比,a[1]>a[2],则比较a[2]和a[3];否则交换a[1]和a[2],再比较a[2]和a[3];以此类推知道最后一个比较完成,此时a[n-1]处的元素为a中的最大值,不用参加下轮比较。(2)比较第2轮:第一个元素a[1]和第二个元素a[2]相比,a[1]>a[2],则比较a[2]和a[3];否则交换a[1]和a[2],再比较a[2
2020-09-11 22:01:31
162
原创 网页轮播图
html<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <link rel="stylesheet" href="in
2020-05-10 13:44:37
326
原创 rem适配布局
根据设备等比例的缩放元素1.em:父元素的字体大小2.rem:根元素的字体大小,根元素指html。比如,根元素( html )设置font-size= 12px;非根元素设置width:2rem;则换成px表示就是24px.3.媒体查询:css3的新语法。@media 可以针对不同的屏幕尺寸设置不同的样式。@media scree and (width:750px)mediaty...
2019-11-16 19:33:36
182
原创 flex布局
Flex布局原理flex是flexible Box的缩写,意为"弹性布局”,用来为盒状模型提供最大的灵活性,任何一个容器都可以指定为flex布局。当我们为父盒子设为 flex布局以后,子元素的float. clear 和vertical- align属性将失效。伸缩布局 =弹性布局=伸缩盒布局=弹性盒布局=flex布局采用Flex布局的元素,称为Flex容器( flex container...
2019-11-15 16:09:22
150
原创 移动端流式布局问题总结
1.margin塌陷原理:父子嵌套元素在垂直方向的margin,父子元素是结合在一起的,他们两个的margin会取其中最大的值.正常情况下,父级元素应该相对浏览器进行定位,子级相对父级定位. 但由于margin的塌陷,父级相对浏览器定位.而子级没有相对父级定位,子级相对父级,就像坍塌了一样.解决方法:1.给父级设置边框或内边距(不建议使用)2.触发bfc(块级格式上下文),改变父级的渲染规则...
2019-11-14 17:51:50
347
原创 ES6新增方法
let关键字let关键字就是用来声明变量的let a = 10;console.log(a);let关键字声明的变量特点使用let关键字声明的变量具有块级作用域,防止循环变量变成全局变量。 if (true) { let b = 20; console.log(b) //20 if (true) { let c = 30; } ...
2019-11-13 15:43:10
141
原创 JS[正则表达式]
创建正则表达式1.字面量 var regexp = /abc/;2.new关键字 var regexp = new RegExp(/abc/);3.验证字符串是否符合正则表达式regexp.test(字符串)方法。 <script> // 正则表达式在js中的使用 // 1. 利用 RegExp对象来创建 正则表达式 va...
2019-11-12 14:04:31
181
原创 JS[深拷贝和浅拷贝]
对于属性值为普通数据类型,深拷贝与浅拷贝并无区别,深拷贝在拷贝时重新申请新的空间存储复杂数据类型的值,但是浅拷贝只是把引用复杂数据类型的地址拷贝给新对象,新对象与旧对象指向同一个地址,改变其中一个的属性值,另一个也会改变。浅拷贝实现:for…in…;ES6新增语法糖assign() <script> // 浅拷贝只是拷贝一层, 更深层次对象级别的只拷贝引用....
2019-11-11 18:11:20
102
原创 JS[高阶函数和递归]
高阶函数接收函数作为参数或者把函数作为返回值输出。<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0">...
2019-11-11 16:41:34
217
原创 JS[严格模式]
严格模式是ES5之后才有的,兼容IE10以上'use strict’开启严格模式可以分为脚本开启和函数开启严格模式变化1.变量不能不声明就赋值;不能使用delete删除已经声明的变量。2.this指向全局作用域对的函数this在未开启严格模式时this指向window,开启严格模式指向undefined。构造函数在未开启严格模式时不使用new关键字可以当做普通函数调用this指向全...
2019-11-11 16:07:13
129
原创 JS[函数this指向和修改this指向的方法]
<script> // 改变函数内this指向 js提供了三种方法 call() apply() bind() // 1. call() var o = { name: 'andy' } function fn(a, b) { con...
2019-11-11 15:56:58
1102
原创 JS[函数的定义和调用]
定义:1.命名函数 2.变量匿名函数 3.new Function()构造函数 <script> // 函数的定义方式 // 1. 自定义函数(命名函数) function fn() {}; // 2. 函数表达式 (匿名函数) var fun = function() {}; ...
2019-11-11 15:41:26
175
原创 JS[ES5的新增方法]
数组方法 <script> // forEach 迭代(遍历) 数组 var arr = [1, 2, 3]; var sum = 0; arr.forEach(function(value, index, array) { console.log('每个数组元素' + value);...
2019-11-10 18:01:40
194
原创 JS[构造函数和原型对象]
在ES6之前没有类的概念,利用构造函数与原型对象实现面向对象编程。构造函数属性和方法。静态成员:属性和方法是通过构造函数添加,调用时也必须使用构造函数调用,不能使用实例化对象调用。实例成员:属性和方法是在内部通过this添加,调用时必须使用实例化对象调用,不能使用构造函数调用。原型对象prototype:每个构造函数都有一个原型对象。将方法直接存储在构造函数中,浪费空间(因为每个实例...
2019-11-10 16:55:57
174
原创 JS[creatElement,appendChild与insertAdjacentHTML]
creatElement,appendChild首先使用creatElement动态创建子元素,再使用appendChild将creatElement创建的子元素添加到父元素中,元素内容较多时,需要使用innerHTML赋值,使用 appendChild添加,appendChild只能添加creatElement创建的元素,不能直接添加字符串。insertAdjacentHTMLinsert...
2019-11-10 16:22:32
393
原创 JS[闭包]
1、什么是闭包?闭包是一个作用域访问函数内部变量的函数。2.闭包的作用。扩展变量的作用域。3.闭包的危害。内存泄漏,变量不能释放。4.举例。<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>闭包思考题</title>&...
2019-11-08 16:38:49
104
原创 JS[面向对象]
两种编程思想面向对象面向过程创建对象,对象的属性和方法面向步骤低耦合,性能降低性能高,耦合高多人合作编程简单编程举例:把大象放进冰箱面向过程:1.打开冰箱门2.把大象放进去3.关上冰箱门面向对象:1.创建对象:冰箱和大象2.冰箱的方法:打开和关闭;大象的方法:放进去对象和类(ES6)类是对象的公共部分的抽象,对象是类的实例化。比如:水果是...
2019-11-08 16:29:19
142
原创 JS基础[元素偏移]
元素偏移offset动态获取该元素的位置(偏移)、大小等。获得元素距离带有定位父元素的位置,获得元素自身的大小(宽度高度)offset系列属性作用element.offsetParent返回作为该元素带有定位的父级元素如果父级都没有定位则返回bodyelement.offsetTop返回元素相对带有定位父元素上方的偏移element.offsetLef...
2019-11-05 19:32:18
1165
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人