自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 rem,em详解

emem先找自身是否有font-size大小,如果没有就找父元素,总的来说就是em相对应父元素css.div1{ font-size: 100px; width: 200px; height: 200px; background-color: magenta;}.div2{ font-size: 20px; /*该元素有font-size,所以1em = 20px*/ width: 1em; height: 1em; bac

2021-10-27 13:10:31 170

原创 javascript执行上下文

什么是执行上下文1.什么是执行上下文总结一句话:执行上下文就是当前javascript代码被解析和执行时存在的环境(抽象概念)。2.执行上下文的类型(1)全局执行上下文:这是默认的,最基础执行上下文。不在函数内部的代码都位于全局执行上下文中创建一个全局对象,其实就是我们的windown对象将this指针指向这个全局对象。(2)函数执行上下文:每次函数被调用的时候,就会创建一个新的执行上下文。每个函数都有自己的执行上下文一个程序中可以存在任意数量的函数执行上下文每一个函数执行上下文被创

2021-10-24 22:34:57 717

原创 前序中序后序遍历javascript

前序遍历(递归法)/** * Definition for a binary tree node. * function TreeNode(val, left, right) { * this.val = (val===undefined ? 0 : val) * this.left = (left===undefined ? null : left) * this.right = (right===undefined ? null : right) * } *//

2021-10-17 12:51:45 179

原创 二叉树的层序遍历javascript

实现思路使用一个队列,将头节点放进去,遍历头节点的时候将头节点取出来,然后将头节点的左右节点放进去,以此循环var levelOrder = function(root) { if (!root) { return []; } var res = [];//存放结果的数组 var queue = [];//队列 queue.push(root);//将头节点放入队列 while (queue.length) { var arr = []; //

2021-10-16 23:52:29 146

原创 动态规划算法精选题

斐波那契数列题目描述/** * @param {number} n * @return {number} */var fib = function(n) { const mod = 1000000007 if(n<2){ return n } let l = 0, r = 0, num = 1//num=0+1 for(let i = 2;i<=n;i++){ l = r r = num

2021-10-16 23:41:03 154

原创 链表算法精选

回文链表题目描述思路使用一个栈将链表遍历了依次存到栈中,然后将栈弹出依次对比/** * Definition for singly-linked list. * function ListNode(val, next) { * this.val = (val===undefined ? 0 : val) * this.next = (next===undefined ? null : next) * } *//** * @param {ListNode} head

2021-10-15 00:21:36 64

原创 二叉树精选

二叉树的最大深度题目链接/** * Definition for a binary tree node. * function TreeNode(val, left, right) { * this.val = (val===undefined ? 0 : val) * this.left = (left===undefined ? null : left) * this.right = (right===undefined ? null : right) * }

2021-10-14 20:36:26 65

原创 javascript词法作用域(静态作用域)

javascript采用的静态作用域,函数的作用域在函数定义的时候就决定了,相反,动态作用域是在函数调用的时候决定的var value = 1;function foo() { console.log(value);}function bar() { var value = 2; foo();}bar();//打印 1分析:javascript采用的是静态作用域,所以当执行foo函数的时候,先在foo函数内部查找有没有value,如果没有则根据定义的位置往上一

2021-10-14 18:45:20 113

原创 浅谈call,apply

这两个方法都是函数对象的方法,需要通过函数对象来调用当对函数调用call和apply都会调用函数执行调用call和apply可以将一个对象指定为第一个参数,此时这个对象将会成为函数执行时的thisvar obj = { name:"小红", sayName:function(){ console.log(this) }}var obj2 = { name:"小明"}fun()//windowfun.call(obj)//objobj.sayName()//.

2021-10-14 17:53:11 64

原创 js原型和原型链浅谈

好文推荐:文档链接我们创建的每一个函数,解析器都会向函数中添加一个属性prototype这个属性对应一个对象,这个对象就是我们所谓的原型对象如果函数作为普通函数调用,prototype没有任何作用当函数通过构造函数调用时,它所创建的对象中都会有一个隐含的属性指向该构造函数的原型对象原型对象就相当于一个公共的区域,所有同一个类的实例都可以访问到这个原型我们可以将对象中共有的内容,统一设置到原型对象中当我们访问对象的一个属性或方法时,它会先在自身对象中寻找,如果有则直接使用,如果没有则会去原型对

2021-10-14 16:43:37 78

原创 Js函数中的this指向

解析器在调用函数每次都会向函数内部传递进一个隐含的参数这个隐含的参数就是this,this指向的是一个对象这个对象我们称为函数执行的上下文对象根据函数的调用方式的不同,this会指向不同的对象 1.以函数的形式调用时,this指的是window 2.以方法的形式调用时,this指的是调用方法的对象function fun(a,b){ console.log(this)}fun()//window对象var obj = { name:"hello", .

2021-10-14 16:36:17 67

原创 sort,map,reduce,filter

mapvar obj = [{ age:11,name:"a"},{ age:22,name:"b"},{ age:33,name:"c"}]//第一个参数:数组中正在处理的当前元素//第二个参数代表索引//第三个是正在调用的这个数组var obj1 = obj.map(function(e,inx,arr){ console.log(e,inx,arr) return e.name})//箭头函数形式// var obj1 = obj.map(

2021-10-12 19:00:19 85

原创 动态规划之最长公共子序列

题目描述题目思路如图如果两个字符串相等,则dp[i][j]=dp[i-1][j-1]+1,表示前面的第i,j个字符前相等的个数加1不相等则选最大/** * @param {string} text1 * @param {string} text2 * @return {number} */var longestCommonSubsequence = function(text1, text2) { let m = text1.length+1 let n = text2

2021-10-12 08:59:35 62

原创 动态规划之编辑距离

题目描述解题思路/** * @param {string} word1 * @param {string} word2 * @return {number} */var minDistance = function(word1, word2) { let m = word1.length+1 let n = word2.length+1 var dp = Array.from(Array(m),()=>Array(n).fill(0))//创建一个m*n的数组

2021-10-12 08:42:05 59

原创 斐波那契数列

题目链接/** * @param {number} n * @return {number} */var fib = function(n) { const mod = 1000000007 if(n<2){ return n } let l = 0, r = 0, num = 1//num=0+1 for(let i = 2;i<=n;i++){ l = r r = num num

2021-10-12 08:34:31 59

原创 函数直接引用和对象引用函数属性中this的不同

解析器在调用函数每次都会向函数内部传递进一个隐含的参数这个隐含的参数就是this,this指向的是一个对象这个对象我们称为函数执行的上下文对象根据含糊的调用方式的不同,this会指向不同的对象1.以函数的形式调用时,this指的是window2.以方法的形式调用时,this指的是调用方法的对象function fun(a,b){ console.log(this)}fun()//window对象var obj = { name:"hello", say:fun}.

2021-10-12 08:09:23 302

原创 构造函数创建对象时对象内的函数应该如何构造

function Person(name){ this.name = name this.sayName = function(){ console.log(this.name) }}var p1 = new Person("小明")var p2 = new Person("小红")console.log(p1.sayName==p2.sayName)//false从上图可以看出每个对象的方法是不相等的,是因为每次创造一个新对象时都会重新建立一个新方法,

2021-10-12 08:02:46 76

原创 函数作用域

1.函数作用域声明提前函数作用域内var和function会声明提前var a = 10function fun(){ console.log(a)//打印undefined var a = 35}fun()在函数作用域中也有声明提前的特性,var和function都提前,所以相当于以下代码var a = 10function fun(){ var a console.log(a) a = 35}fun()2.函数作用域的就近原则函数作用域

2021-10-11 23:51:33 66

原创 javascript的变量声明提前和函数声明提前

var变量提升console.log(a)//打印undefinedvar a = 123console.log(a)//未定义该属性a = 123这是为什么呢?使用var关键字声明的变量会在所有的代码执行之前被声明,但不会赋值,所以是undefined如果声明变量不使用var关键字,则变量不会被声明提前所以第一段代码等同于var aconsole.log(a)//aa = 123函数的声明提前fun()//我是funfun2()//undefined is not a

2021-10-11 22:05:21 373

原创 打家劫舍123

打家劫舍1解题思路最大的值等于Math.max(第i个值+dp[i-2],dp[i-1])其中dp[i]表示前i个值的最大值/** * @param {number[]} nums * @return {number} */var rob = function(nums) { if(nums==null||nums.length==0) return 0 if(nums.length == 1) return nums[0] if(nums.length == 2

2021-10-10 16:09:21 40

原创 买卖股票的最佳时机

题目链接/** * @param {number[]} prices * @return {number} */ /** 实现思路:股票包括买和卖,买和卖要一起发生才能产生利润,所以买一只股票要有一只高于它的股票才能 产生利润。 卖的时候可能会出现后面的价钱越来越高,所以要循环到最高的那个 用两个指针分别指示前后两只股票,当右指针的价钱更高时说明可以卖了,右指针+1(找到最高的那个卖价) */var maxProfit = function(prices) { var l.

2021-10-09 10:44:19 68

原创 中国数字转阿拉伯数字

中文数字命名以万和亿为小结,所以这个要判断好let Cnum = { "零":0, "一":1, "二":2, "三":3, "四":4, "五":5, "六":6, "七":7, "八":8, "九":9}let Cq = { "十":10, "百":100, "千":1000, "万":10000, "亿":100000000}function chineseToNum(c

2021-10-06 23:31:47 232

原创 servlet的使用

servlet的基本使用package com.xxx.servlet;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;im

2021-10-06 23:12:25 100

原创 jdbc-mysql

statement模式package com.xxx.jdbc;import java.sql.*;public class jdbc01 { public static void main(String[] args) throws ClassNotFoundException, SQLException { //1.加载驱动 Class.forName("com.mysql.cj.jdbc.Driver"); //2.用户信息和url

2021-10-04 17:10:21 51

原创 合并K个有序链表

题目描述/** * Definition for singly-linked list. * function ListNode(val, next) { * this.val = (val===undefined ? 0 : val) * this.next = (next===undefined ? null : next) * } *//** * @param {ListNode[]} lists * @return {ListNode} */var merge

2021-09-28 11:04:48 60

原创 删除链表的倒数第n个节点

题目链接/** * Definition for singly-linked list. * function ListNode(val, next) { * this.val = (val===undefined ? 0 : val) * this.next = (next===undefined ? null : next) * } *//** * @param {ListNode} head * @param {number} n * @return {ListN

2021-09-28 10:26:38 54

原创 最近三数之和

题目描述/** * @param {number[]} nums * @param {number} target * @return {number} */var threeSumClosest = function(nums, target) { let length = nums.length if(length == 0) return null if(length == 1) return nums[0] if(length == 2) return n

2021-09-28 08:31:01 49

原创 三数之和为0

题目描述题目思路:将数组从小到大排序从第一个数开始遍历当该数大于0,说明相加起来肯定不会=0,结束遍历当该数等于前一个数,continue剩下两个数定义为right(最右的数),left(该数的下一个数),然后将三个数进行相加,当>0的时候,right–,当<0的时候,++记得去重/** * @param {number[]} nums * @return {number[][]} */var threeSum = function(nums) { if(nu

2021-09-28 08:14:19 119

原创 最长公共前缀

题目描述/** * @param {string[]} strs * @return {string} */var longestCommonPrefix = function (strs) { if (strs.length === 0) return '' else if (strs.length === 1) return strs[0] strs.sort() let start = strs[0], end = strs[strs.length

2021-09-28 08:08:08 44

原创 罗马数字转整数

题目描述思路:IV表示是4,VI表示是6,所以当左边的字符串大于右边时直接加相应数字,相反则减去该数字,最后记得加上最后一个数字/** * @param {string} s * @return {number} */var romanToInt = function(s) { let obj = { I:1, V:5, X:10, L:50, C:100, D:500, M:

2021-09-27 19:31:58 50

原创 2021-09-27

题目描述解题思路:以左右为边界,谁小谁往里面移动,例如右高度比较小,则右向左移动。/** * @param {number[]} height * @return {number} */var maxArea = function(height) { let max = -1 let L = 0 let R = height.length-1 while(L<R){ if(height[L]<height[R]){

2021-09-27 19:14:50 57

原创 最长回文字符串

题目描述/** * @param {string} s * @return {string} */var longestPalindrome = function(s) { if(s.length<2) return s // if(s.length<3) return s.charAt(0) let returnS = '' for(let i = 0;i<s.length;i++){ helper(i,i)//回文字符串为单数

2021-09-27 19:06:03 65

原创 寻找两个正序数组的中位数

题目链接/** * @param {number[]} nums1 * @param {number[]} nums2 * @return {number} */var findMedianSortedArrays = function(nums1, nums2) { let stack = [] while(nums1.length!=0){ stack.push(nums1.pop()) } while(nums2.length!=0){

2021-09-27 18:55:21 48

原创 无重复字符串的最长字串

题目描述/** * @param {string} s * @return {number} */ //滑动窗口解法var lengthOfLongestSubstring = function(s) { if(s=='') return 0 let set = new Set() let max = 0 let left = 0 let right = 1 set.add(s.charAt(left))//添加第一个元素 let leng

2021-09-27 18:51:26 63

原创 链表两数相加

题目链接/** * Definition for singly-linked list. * function ListNode(val, next) { * this.val = (val===undefined ? 0 : val) * this.next = (next===undefined ? null : next) * } *//** * @param {ListNode} l1 * @param {ListNode} l2 * @return {List

2021-09-26 19:38:50 64

原创 求二叉树最大深度

leetcode地址/** * Definition for a binary tree node. * function TreeNode(val, left, right) { * this.val = (val===undefined ? 0 : val) * this.left = (left===undefined ? null : left) * this.right = (right===undefined ? null : right) * } */

2021-07-21 20:59:16 69

原创 二叉搜索树javascript

定义function BinarySearchTree(){ function Node(key){ this.key = key this.left = null this.right = null } this.root = null} 插入节点BinarySearchTree.prototype.insertNode = function(node,newNode

2021-07-21 20:56:14 117 1

原创 给定一个数组,其中一个数出现了奇数次,其他出现了偶数次,求奇数次的数

理论运用到了异或的知识,只要准备一个err = 0即可,由err去异或数组中的所有数,由异或的性质链接1和3可知,最后err = 奇数次的个数function sigle(num){ let err = 0 for(let i =0 ; i<num.length ; i++){ err ^= num[i] } return err}let num = [2,1,2,5,5,1,5]let r = sigle(num)console.log(

2021-07-15 16:57:03 547

原创 异或运算性质

0^N = NN^N = N2.满足交换律和结合律a^b = b^a(a ^ b) ^ c = a ^ (b ^ c)3.同样一批数,选择谁先谁后异或结果是一样的

2021-07-15 16:48:09 250

原创 koa处理错误信息emit函数和on函数解析

当用户传给我们信息,如果是错误的信息,我们要进行处理,例如登录的时候密码错误了const Koa = require('koa');//接收的是类const app = new Koa();app.use((ctx,next)=>{ const isLogin = false if(!isLogin){ ctx.response.body = 'ERROR'//设置要传给用户的错误信息,然后通过app.on返回 //参数1;给错误取名,和下面的

2021-07-12 00:18:33 924

空空如也

空空如也

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

TA关注的人

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