自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 leetcode 31. 下一个排列

实现获取 下一个排列 的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须 原地 修改,只允许使用额外常数空间。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/next-permutation著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。思路:要将左侧的一个较小数和右侧的一个较大数交换,这个较小数的位置要尽量靠右,较大数要.

2021-04-13 15:42:04 96

原创 Vue响应式原理

当你把一个普通的 JavaScript 对象传入 Vue 实例作为 data 选项,Vue 将遍历此对象所有的 property,并使用 Object.defineProperty 把这些 property 全部转为 getter/setter。这些 getter/setter 对用户来说是不可见的,但是在内部它们让 Vue 能够追踪依赖,在 property 被访问和修改时通知变更。每个组件实例都对应一个 watcher 实例,它会在组件渲染的过程中把“接触”过的数据 property 记录为依赖。之

2021-01-30 17:07:50 120 1

原创 剑指 Offer 66-构建乘积数组

给定一个数组 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]。不能使用除法。示例:输入: [1,2,3,4,5]输出: [120,60,40,30,24]提示:所有元素乘积之和不会溢出 32 位整数a.length <= 100000来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/gou-jian-cheng-j.

2020-08-14 08:31:42 129

原创 剑指 Offer 62- 圆圈中最后剩下的数字

0,1,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字。求出这个圆圈里剩下的最后一个数字。例如,0、1、2、3、4这5个数字组成一个圆圈,从数字0开始每次删除第3个数字,则删除的前4个数字依次是2、0、4、1,因此最后剩下的数字是3。示例 1:输入: n = 5, m = 3输出: 3示例 2:输入: n = 10, m = 17输出: 2限制:1 <= n <= 10^51 <= m <= 10^6来源:力扣(LeetCode).

2020-08-13 09:12:20 121

原创 剑指 Offer 61-扑克牌中的顺子

从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。2~10为数字本身,A为1,J为11,Q为12,K为13,而大、小王为 0 ,可以看成任意数字。A 不能视为 14。示例 1:输入: [1,2,3,4,5]输出: True示例 2:输入: [0,0,1,2,5]输出: True限制:数组长度为 5数组的数取值为 [0, 13] .来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/bu-ke-pai-zhong-de.

2020-08-12 09:27:42 91

原创 剑指 Offer 59 - I-滑动窗口的最大值

给定一个数组 nums 和滑动窗口的大小 k,请找出所有滑动窗口里的最大值。示例:输入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3输出: [3,3,5,5,6,7]解释:滑动窗口的位置 最大值[1 3 -1] -3 5 3 6 7 31 [3 -1 -3] 5 3 6 7 31 3 [-1 -3 5] 3 6 7 51 3 -1 [-3 5 3] 6 .

2020-08-11 08:37:18 74

原创 剑指 Offer 57- 和为s的两个数字

输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对数字的和等于s,则输出任意一对即可。示例 1:输入:nums = [2,7,11,15], target = 9输出:[2,7] 或者 [7,2]示例 2:输入:nums = [10,26,30,31,47,60], target = 40输出:[10,30] 或者 [30,10]限制:1 <= nums.length <= 10^51 <= nums[i] <= 10^6来.

2020-08-09 09:05:19 67

原创 剑指 Offer 56 - I-数组中数字出现的次数

一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。示例 1:输入:nums = [4,1,4,6]输出:[1,6] 或 [6,1]示例 2:输入:nums = [1,2,10,4,1,4,3,3]输出:[2,10] 或 [10,2]限制:2 <= nums.length <= 10000来源:力扣(LeetCode)链接:https://leetcode-cn.com/prob.

2020-08-08 09:26:39 114

原创 剑指 Offer 53 - II- 0~n-1中缺失的数字

一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内。在范围0~n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字。示例 1:输入: [0,1,3]输出: 2示例 2:输入: [0,1,2,3,4,5,6,7,9]输出: 8限制:1 <= 数组长度 <= 10000来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/que-shi-de-shu-zi-lcof著作权归领扣网.

2020-08-06 15:20:16 93

原创 剑指 Offer 53 - I. 在排序数组中查找数字 I

统计一个数字在排序数组中出现的次数。示例 1:输入: nums = [5,7,7,8,8,10], target = 8输出: 2示例 2:输入: nums = [5,7,7,8,8,10], target = 6输出: 0限制:0 <= 数组长度 <= 50000来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/zai-pai-xu-shu-zu-zhong-cha-zhao-shu-zi-lcof著作权归领扣网络所有.

2020-08-05 09:06:38 75

原创 剑指 Offer 52-两个链表的第一个公共节点

输入两个链表,找出它们的第一个公共节点。如下面的两个链表:示例 1:输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3输出:Reference of the node with value = 8输入解释:相交节点的值为 8 (注意,如果两个列表相交则不能为 0)。从各自的表头开始算起,链表 A 为 [4,1,8,4,5],链表 B 为 [5,0,1,8,4,5]。在 A .

2020-08-05 08:37:07 147

原创 剑指 Offer 48. 最长不含重复字符的子字符串

请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。示例 1:输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: “pwwkew”输出: 3解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。请注意,你的答案必须是 子串 的长度,“pwke” 是一个子序列,不是子串。.

2020-08-02 09:41:04 85

原创 剑指 Offer 46- 把数字翻译成字符串

给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。示例 1:输入: 12258输出: 5解释: 12258有5种不同的翻译,分别是"bccfi", “bwfi”, “bczi”, “mcfi"和"mzi”来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/ba-shu.

2020-08-01 10:00:45 119

原创 剑指offer44-数字序列中某一位的数字

数字以0123456789101112131415…的格式序列化到一个字符序列中。在这个序列中,第5位(从下标0开始计数)是5,第13位是1,第19位是4,等等。请写一个函数,求任意第n位对应的数字。示例 1:输入:n = 3输出:3示例 2:输入:n = 11输出:0来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/shu-zi-xu-lie-zhong-mou-yi-wei-de-shu-zi-lcof著作权归领扣网络所有。商业转.

2020-07-30 14:09:27 127 1

原创 剑指 Offer 41- 数据流中的中位数

如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。例如,[2,3,4] 的中位数是 3[2,3] 的中位数是 (2 + 3) / 2 = 2.5设计一个支持以下两种操作的数据结构:void addNum(int num) - 从数据流中添加一个整数到数据结构中。double findMedian() - 返回目前所有元素的中位数。示例 1:输入:[“Me.

2020-07-14 12:52:54 69

原创 剑指offer40-最小的k个数

输入整数数组 arr ,找出其中最小的 k 个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4。示例 1:输入:arr = [3,2,1], k = 2输出:[1,2] 或者 [2,1]示例 2:输入:arr = [0,1,2,1], k = 1输出:[0]限制:0 <= k <= arr.length <= 100000 <= arr[i] <= 10000来源:力扣(LeetCode)链接:https://le.

2020-07-13 09:54:55 104

原创 剑指offer38-字符串的排列

输入一个字符串,打印出该字符串中字符的所有排列。你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。示例:输入:s = “abc”输出:[“abc”,“acb”,“bac”,“bca”,“cab”,“cba”]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/zi-fu-chuan-de-pai-lie-lcof著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。这一题就是含重复项的全排列,采用回溯法,具体选择下一.

2020-07-12 09:27:10 86

原创 剑指offer37-序列化二叉树

请实现两个函数,分别用来序列化和反序列化二叉树。示例:你可以将以下二叉树:1/ 2 3/ 4 5序列化为 “[1,2,3,null,null,4,5]”来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/xu-lie-hua-er-cha-shu-lcof著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。整个序列化的过程主要为层次遍历。序列化为字符串的时候可以将越过叶节点的null也计入,这样比较方便。.

2020-07-11 09:39:12 132

原创 剑指offer36-二叉搜索树和双向链表

输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表。要求不能创建任何新的节点,只能调整树中节点指针的指向。我们希望将这个二叉搜索树转化为双向循环链表。链表中的每个节点都有一个前驱和后继指针。对于双向循环链表,第一个节点的前驱是最后一个节点,最后一个节点的后继是第一个节点。特别地,我们希望可以就地完成转换操作。当转化完成以后,树中节点的左指针需要指向前驱,树中节点的右指针需要指向后继。还需要返回链表中的第一个节点的指针。来源:力扣(LeetCode)链接:https://leetco.

2020-07-10 10:32:01 117

原创 剑指offer35-复杂链表的复制

请实现 copyRandomList 函数,复制一个复杂链表。在复杂链表中,每个节点除了有一个 next 指针指向下一个节点,还有一个 random 指针指向链表中的任意节点或者 null。示例 1:输入:head = [[7,null],[13,0],[11,4],[10,2],[1,0]]输出:[[7,null],[13,0],[11,4],[10,2],[1,0]]示例 2:输入:head = [[1,1],[2,1]]输出:[[1,1],[2,1]]来源:力扣(LeetCode)链.

2020-07-09 12:13:55 76

原创 剑指offer33-二叉搜索树的后序遍历序列

输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 true,否则返回 false。假设输入的数组的任意两个数字都互不相同。参考以下这颗二叉搜索树:5/ 2 6/ 1 3示例 1:输入: [1,6,3,2,5]输出: false示例 2:输入: [1,3,2,6,5]输出: true来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/er-cha-sou-suo-shu-de-hou-xu-bia.

2020-07-08 13:01:34 102

原创 剑指offer32||-.从上到下打印二叉树||

从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。例如:给定二叉树: [3,9,20,null,null,15,7],3/ 9 20/ 15 7返回其层次遍历结果:[[3],[9,20],[15,7]]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/cong-shang-dao-xia-da-yin-er-cha-shu-ii-lcof著作权归领扣网络所有。商业转载请联系官方授权,非商业.

2020-07-07 09:45:35 76

原创 剑指offer30-包含min函数的栈

定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。示例:MinStack minStack = new MinStack();minStack.push(-2);minStack.push(0);minStack.push(-3);minStack.min(); --> 返回 -3.minStack.pop();minStack.top(); --> 返回 0.mi.

2020-07-06 10:26:27 95

原创 剑指offer27-二叉树的镜像

请完成一个函数,输入一个二叉树,该函数输出它的镜像。例如输入:4/ 2 7/ \ / 1 3 6 9镜像输出:4/ 7 2/ \ / 9 6 3 1来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/er-cha-shu-de-jing-xiang-lcof著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。这个题目比较简单,思路就是依次遍历二叉树的各个节点并.

2020-07-04 21:29:16 2717

原创 剑指offer24-反转链表

定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL限制:0 <= 节点个数 <= 5000这里给出两种思路,一是双指针头插法建立链表,二是利用递归双指针# Definition for singly-linked list.# class ListNode:# def __init__(.

2020-07-02 08:32:13 106

原创 剑指offer21-调整数组顺序使奇数位于偶数前

题目详情输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。示例:输入:nums = [1,2,3,4]输出:[1,3,2,4]注:[3,1,2,4] 也是正确的答案之一。这里有两种解题思路首尾双指针这个思路和快排类似,不详述了。class Solution: def exchange(self, nums: List[int]) -> List[int]: if len(nums)==0:

2020-06-25 09:02:50 74

原创 剑指offer-正则表达式匹配

题目请实现一个函数用来匹配包含’. ‘和’‘的正则表达式。模式中的字符’.‘表示任意一个字符,而’‘表示它前面的字符可以出现任意次(含0次)。在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"abaca"匹配,但与"aa.a"和"aba"均不匹配。示例输入:s = “ab”p = "."输出: true解释: "." 表示可匹配零个或多个(’’)任意字符(’.’)。来源:力扣(LeetCode)链接:https://leetcode-cn.com/

2020-06-18 09:55:24 106

原创 浅谈前端安全

1@TOC面试被问到了前端安全方面的,然后一问三不知,现在先总结一下概念性的吧。XSS攻击什么是XSSXSS全称跨站脚本攻击,是指恶意的web用户将代码植入到网站提供给其他用户使用的页面中,使得在渲染页面时执行了预期外的代码。XSS的攻击方式反射型攻击将XSS代码作为url的参数提交给服务器,服务器返回的响应中包含该XSS代码,浏览器解析执行该代码。举个例子,通过这种方式可以获...

2019-03-05 19:52:53 148

原创 内容不足footer位于页面底部-字节跳动笔试题

内容不足footer位于页面底部字节跳动前端面试题,大意如下:1.页面有三个模块,heaer,content,footer2.当页面内容超出浏览器窗口时不显示2.当content不足以填充页面时footer出现在页面底部&lt;!DOCTYPE html&gt;&lt;html lang="en"&gt;&lt;head&gt; &lt;meta charset="UTF-8...

2019-02-24 13:03:20 263

原创 JS异步机制

JS异步机制主线程、执行栈、任务队列主线程不断读取执行栈中的同步事件,直到执行栈空异步任务结束放入任务队列,执行栈空时主线程读取任务队列任务队列读取完毕,回到步骤1宏任务与微任务宏任务:script(整体代码)、setTimeout、setInterval、UI 渲染、 I/O、postMessage、 MessageChannel、setImmediate(Node.js 环境)...

2018-09-26 21:33:23 348

原创 css居中总结

通用方法宽度高度都可以不确定 1.flex(IE10+).son{ display: flex; justify-content: center; align-items: center; }2.transform.container{ position:relative; } .son{ position: absolute ;...

2018-08-11 13:47:14 111

原创 深浅拷贝

深浅拷贝javascript中的数据类型基本类型:undefined,null,Boolean,Number,String,Symbol 保存在栈中,不可改变,复制时是创建副本给变量引用类型:Object,Array,Function,Date,RegExp 保存在堆中,栈中保存的是指向其堆中存储空间的指针,复制时在栈中创建新的空间复制指针的值赋值、深浅拷贝赋...

2018-08-10 10:39:54 99

原创 函数上下文与闭包

作用域链作用域链的查找过程中有两个方向本身的作业域链作用域链中对象的原型链优先查找原型链闭包 闭包是一系列代码块(在ECMAScript中是函数),并且静态保存所有父级的作用域。通过这些保存的作用域来搜寻到函数中的自由变量。函数在定义时,将外部上下文的变量保存在[[scope]]属性中,且不再改变,这就是静态作用域;如果多个函数共用同一个外部上下文,则他们...

2018-03-11 09:38:18 162

原创 JS高级语言程序设计笔记——DOM之Element类型

所有的HTML元素都由HTMLElement类型表示,HTMLElement类型继承自Element并添加了一些属性,包括:idtitledirlangclassName操作特性操作特性的三个方法getAttribute();setAttribute();removeAttribute();这三个方法可操作所有特性,包括之前提到的5个属性以及自定义特性; 但是自定...

2018-03-04 21:36:36 144

原创 基本视觉格式化——块级元素

块级元素——水平格式化(非替换元素)不设置margin和width,则width为父元素的内容宽度(总宽度),margin为0若设置了margin,没有设置width,则width为总宽度减去margin过分受限时(margin和width都有指定),各浏览器的处理不同,firefox保持原设置,chrome将margin-right设为auto处理只设置width,margin都为a...

2018-02-14 15:31:35 202

原创 JS中的变量声明——var,let,const的区别

简述var 作用域:函数;可以重新分配;可以修改;同一作用域可以重复声明let 作用域:块级;可以重新分配;可以修改;同一作用域不能重复声明const 作用域:块级;不能重新分配;可以修改;同一作业域不能重复声明

2017-11-04 17:25:37 500

原创 jQuery中AJAX的跨域解决方案

jQuery中封装了ajax的方法,以下主要讨论在这种方法下跨域的问题1. 在服务端添加响应头 header('Access-Control-Allow-Origin', '*') header('Access-Control-Allow-Methods', 'PUT,POST,GET,DELETE,OPTIONS')

2017-10-31 15:31:15 384

原创 js高级语言程序设计笔记——创建对象

工厂模式通过封装一个函数来创建对象,所有的对象都是相同的,缺点是无法赋予一个对象特定的类型构造函数模式原型模式

2017-10-03 14:29:41 267

原创 box-sizing的用法

css使用的是盒模型,也就是说元素实际的宽度=padding+border+width,只要改变了内边距或者边框的宽度,元素的整体宽度都会改变,CSS3中box-sizing为这一问题提供了解决方法-------------------##box-sizing属性 - box-sizing的取值 `content-box|border-box|inherit` - content-box

2017-09-26 16:25:06 417

空空如也

空空如也

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

TA关注的人

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