自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

ronghwa_lu

卷又卷不动

  • 博客(143)
  • 收藏
  • 关注

原创 JS:三大算法day4

贪心算法452. 用最少数量的箭引爆气球(复习)435. 无重叠区间 (复习)56. 合并区间 (复习)763.划分字母区间 (中等)134. 加油站(中等)135. 分发糖果(困难)fail860. 柠檬水找零 (简单)406. 根据身高重建队列 (中等)fail回溯算法131. 分割回文串(中等)417. 太平洋大西洋水流问题(中等)93. 复原 IP 地址(中等)78. 子集 (中等)90. 子集 II (中等)491. 递增子序列 (中等)332. 重新安排行程 (困

2022-06-09 10:46:31 267

原创 计算机网络——http

HTTP涉及的知识点太多,根据搜索、学习的路径做记录。

2022-05-10 14:53:12 2865 1

原创 JavaScript 对象类型转换、箭头函数this指向

箭头函数的this在定义时就被确定了,箭头函数没有自己的 this 值,箭头函数中所使用的 this 都是来自函数作用域链,箭头函数中的this从上层作用域寻找。apply无法改变箭头函数的this指向由于对象是作为对象字面量的属性定义的,对象字面量在全局代码中定义,因此,箭头函数内部的this值与全局函数的this值相同代码: <script> /* 对象类型转换 */ var x = {

2022-05-05 16:26:14 659

原创 JS:三大算法 day3

63.不同路径 II:网格中的障碍物和空位置分别用 1 和 0 来表示。343.整数拆分(中等)96.不同的二叉搜索树 (中等)动态规划——子序列问题300.最长递增子序列(已做、入门)1143.最长公共子序列 (旧题)1035.不相交的线 (中等)fail674.最长连续递增序列 (简单)718.最长重复子数组 (中等)53.最大子数组和 647.回文子串 (中等)516.最长回文子序列 5.最长回文子串。

2022-05-04 00:19:31 225

原创 JS:三大算法 day2

回溯算法77.组合——横向元素唯一、三角遍历216.组合总和 III——横向元素唯一、三角遍历40.组合总和 II——横向元素重复(需去重)、三角遍历39.组合总和 ——横向元素唯一、矩阵遍历47.全排列 II——横向元素重复(需去重)、三角遍历17.电话号码的字母组合贪心算法(重做)376.摆动序列53. 最大子数组和 (简单)122. 买卖股票的最佳时机 II (中等)模拟贪心算法动态规划(情况复杂)55. 跳跃游戏 (中等)

2022-04-30 17:38:55 1464

原创 牛客acm模式——美团2021(第10场)

美团acm模式的输入输出美团2021校招笔试-编程题(通用编程试题,第10场)第一题输入描述:输入第一行仅包含三个正整数n,x,y,分别表示参赛的人数和晋级淘汰人数区间。(1<=n<=50000,1<=x,y<=n)输入第二行包含n个整数,中间用空格隔开,表示从1号选手到n号选手的成绩。(1<=|a_i|<=1000)输出描述:输出仅包含一个整数,如果不存在这样的m,则输出-1,否则输出符合条件的最小的值。输入6 2 31 2 3 4 5

2022-04-02 17:37:37 1226

原创 跟着做react项目 Redux(P137至P141)

前台404组件< HashRouter>的问题合并到服务端项目一起运行与服务器端项目独立运行生产环境中 BrowserRouter 的问题

2022-03-20 15:08:42 1068

原创 跟着做react项目 Redux(P109至P133)

Redux入门Redux各模块count(react组件)react-reduxredux 默认是不能进行异步处理的多个reducerRedux管理项目管理头部标题理当前登陆用户实现自己定义的Redux库createStore()combineReducers()组件的context属性自定义react-redux第三方库

2022-03-19 21:49:20 932

原创 JavaScript复习,this指向、原型链、变量提升、作用域、闭包

文章目录函数中this指向问题原型变量/函数 提升全局执行上下文:测试题var可重复声明作用域闭包更深入理解闭包的原理闭包的作用终极题目ES5的继承

2022-03-17 20:11:25 3265 1

原创 跟着做react项目(React考点 和 javaScript执行机制)

setState()参数setState()更新状态是异步还是同步的?异步的setState() 多次调用, 如何处理? (新知识)如何得到异步更新后的状态数据?setState() 面试题微任务 宏任务题目Component存在的问题?线程概念浏览器内核由很多模块组成:定时器Web Workers

2022-03-15 16:33:35 1267

原创 跟着做react项目(至P93)

富文本编辑器组件add-update.jsx 提交表单事件角色管理Table表格可选择的表格(Antd)Table的onRowTree树形控件可选择表格(部分)代码Tree树形控件 antd4.x版

2022-03-14 15:33:03 736

原创 跟着做react项目(至P81)

添加/修改组件Form组件Cascader级联列表开始布局准备数据逻辑函数Q&A新的组件 UploadUpload组件的参数上传文件onChange(核心)修改页面Upload组件总结结果图

2022-03-12 18:24:43 1291

原创 跟着做react项目(至P67)

导航商品管理Product组件ProductHome商品展示主界面商品信息字段ProductDetail商品详情界面结尾商品管理Product组件知识点一:只要前缀能匹配 路由要求的地址即可,默认为模糊匹配这种情况,总是只匹配到第一个注册路由。ProductHome商品展示主界面知识点二:后台分页技术:要知道总记录数,虽然不是请求所有数据,但得提前知道有多少页。所以state属性要存储当前数据总数,根据每页显示条数,可求Table有多少页前台的Table组件,要知道当前第几页,

2022-03-11 00:56:14 742

原创 跟着做react项目(至P57)

后台的API接口在此文件,根据后台定义可知请求路径每一列固定内容的列表(antd)

2022-03-10 01:45:11 433

原创 跟着做react项目(至P44)

导航启动问题代理Admin路由组件结构LeftNav组件Header组件静态页面高德天气动态页面启动问题之前启动react-app:npm start是没问题的,可以跨域请求登录。但在写完Header组件时,就启动不了。后来研究一下,是在package.json加了代理。但我不加,有不能访问后端程序。Invalid options object. Dev Server has been initialized using an options object that does not match th

2022-03-07 20:01:26 419

原创 跟着做react项目(至P27)

导航接口文档使用 postman 工具测试接口mongo数据库用户原理monggo compass 添加数据启动本地服务器前后台交互登录功能接口文档后台应用负责处理前台应用提交的请求, 并给前台应用返回 json 数据前台应用负责展现数据, 与用户交互, 与后台应用交互使用 postman 工具测试接口有后台node.js代码,那得自己在本机上面创建的用户数据库,才能通过发声请求来测试接口。因为之前学过node.js 和 用过MongoDB,不需要下载,直接启动。server.js可知,数据

2022-03-05 21:49:46 554

原创 跟着做react项目(至P17)

导向git命令步骤基本结构引入antd引入路由Login路由组件antd—Form表单git命令步骤程序员Agit initgit add . # 添加到暂存区git commit -m "init app" # 提交到本地仓库# 关联到远程仓库,为地址起别名git remote add origin https://gitee.com/远程仓库地址.git git push origin master # 推送本地master分支到远程master分支git checkout -b de

2022-03-04 14:39:04 552

原创 JS:三大算法 day1

回溯、贪心、动态规划的思路是通过大量做题培养的,不是说几天就能掌握,而且题目不会告诉你使用哪个算法。坚持做题。。。回溯——46. 全排列 51.N皇后前序遍历的代码在进入某一个节点之前的那个时间点执行,后序遍历代码在离开某个节点之后的那个时间点执行。 「路径」和「选择」是每个节点的属性def backtrack(路径, 选择列表): if 满足结束条件: result.add(路径) return for 选择 in 选择列表: # 做选择 将该

2022-03-03 01:22:18 517

原创 JS:二叉堆 3题、区间问题 7 题

小顶堆其他语言可以用优先队列完成小顶堆的功能,但没有内置函数的JavaScript就要手写一个小顶堆。面试题要用,起码可以复制一个没错的数据结构。如果要求手写小顶堆,我们也可以从理解上记忆。之前写过的 23.合并K个升序链表(困难)JS代码小顶堆(优先队列)有两个主要 API,分别是 insert 插入一个元素和 delMin 删除最小元素。二叉堆可用数组实现,核心是父节点与左右子节点有倍数关系。一步步构建类的数据结构 和 获取节点(索引)(要熟悉JS怎么写类)class minHeap..

2022-03-01 22:03:36 365

原创 JS:单调栈——更大元素,每日温度,柱状图矩阵,移掉数字,去重复字母

单调队列 处理 滑动窗口最大值(困难)单调栈:单调栈用途不太广泛,只处理一种典型的问题,叫做 Next Greater Element。496. 下一个更大元素 I (简单)这里多了一步是,在nums2中找到目标值nums1。给你两个 没有重复元素 的数组 nums1 和 nums2 ,下标从 0 开始计数,其中nums1 是 nums2 的子集。var nextGreaterElement = function(nums1, nums2) { let stack = [], n.

2022-02-28 15:44:17 969

原创 JS:队列/栈——最长有效括号,平衡括号,后缀表达式

225. 用队列实现栈 (简单)请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作。考点在pop()方法:底层数据结构是先进先出的队列,每次 pop 只能从队头取元素;但是栈是后进先出,pop 要从队尾取元素。解决方法简单粗暴,把队列前面的都取出来再加入队尾,让之前的队尾元素排到队头,这样就可以取出了。/** * @return {number} */MyStack.prototype.pop = function() { let len = thi.

2022-02-27 17:46:05 639

原创 JS:二叉搜索树(2)——后序遍历、递归改迭代

手把手带你刷通二叉搜索树(第三期)——如何计算所有合法 BST96. 不同的二叉搜索树 (中等)fail给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。什么方式能够正确地穷举合法 BST 的数量呢?所以如果固定3作为根节点,左子树节点就是{1,2}的组合,右子树就是{4,5}的组合。左子树的组合数和右子树的组合数乘积就是3作为根节点时的 BST 个数。函数的含义为:计算闭区间 [1, n] 组成的 BST

2022-02-26 18:30:54 659

原创 JS:二叉搜索树(1)——中序遍历,基础操作

Binary Search Tree简单总结下吧,BST 相关的问题,要么利用 BST 左小右大的特性提升算法效率,要么利用中序遍历的特性满足题目的要求,也就这么些事儿吧。230. 二叉搜索树中第K小的元素给定一个二叉搜索树的根节点 root ,和一个整数 k ,请你设计一个算法查找其中第 k 个最小元素(从 1 开始计数)。BST 的中序遍历其实就是升序排序的结果var kthSmallest = function(root, k) { let res = 0, rank = 0;

2022-02-25 20:59:40 1557

原创 JS:二叉树(4)——刷题,最小深度,公共祖先,最大路径和

100. 相同的树 (简单)给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。因为遍历的函数有返回值,所以递归左右子树时,要用变量去接住。!(p && q) 只要有一个为null ,表达式为truevar isSameTree = function(p, q) { if (p==null && q==null) return true if (!(p &am

2022-02-25 00:32:59 654

原创 JS:二叉树(3)——序列化二叉树、查找重复子树

根据题意,思考一个二叉树节点需要做什么,到底用什么遍历顺序就清楚了。297.二叉树的序列化与反序列化652.寻找重复的子树297.二叉树的序列化与反序列化 (困难)你只需要保证一个二叉树可以被序列化为一个字符串并且将这个字符串反序列化为原始的树结构。所谓的序列化不过就是把结构化的数据「打平」,其实就是在考察二叉树的遍历方式。那么,反序列化过程也是一样,先确定根节点 root,然后遵循前序遍历的规则,递归生成左右子树即可:前序遍历解法:var serialize = function(

2022-02-24 13:44:12 419

原创 JS:二叉树(2)——递归操作节点、构造二叉树

手把手带你刷二叉树(第一期)「该做什么」就是让你想清楚写什么代码能够实现题目想要的效果,所谓「什么时候做」,就是让你思考这段代码到底应该写在前序、中序还是后序遍历的代码位置上。我们直接上几道比较有意思,且能体现出递归算法精妙的二叉树题目二叉树题目的一个难点就是,如何把题目的要求细化成每个节点需要做的事情。226. 翻转二叉树给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。这道题目比较简单,关键思路在于我们发现翻转整棵树就是交换每个节点的左右子节点,于是我们把交换左右子节

2022-02-23 19:41:52 794 1

原创 JS:遍历二叉树(1)——两种递归思路

前中后序是遍历二叉树过程中处理每一个节点的三个特殊时间点二叉树的所有问题,就是让你在前中后序位置注入巧妙的代码逻辑,去达到自己的目的。后序位置的代码不仅可以获取参数数据,还可以获取到子树通过函数返回值传递回来的数据。一旦你发现题目和子树有关,那大概率要给函数设置合理的定义和返回值,在后序位置写代码了两种解题思路二叉树题目的递归解法可以分两类思路,第一类是遍历一遍二叉树得出答案,第二类是通过分解问题计算出答案,这两类思路分别对应着 回溯算法核心框架 和 动态规划核心框架。104. 二叉树的最大深度

2022-02-23 12:51:35 1406

原创 JS:链表题目(2)——反转链表(递归、迭代)、回文链表

25.K 个⼀组翻转链表83.删除排序链表中的重复元素92.反转链表 II234.回⽂链表206. 反转链表 (简单)给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。var reverseList = function(head) { let p = new ListNode(0), p1 = head; while(p1){ p1 = head.next; head.next = p.next; p.next

2022-02-22 14:53:27 1402

原创 JS:链表题目(1)——两数相加、合并链表(小顶堆)

2.两数相加19.删除链表的倒数第 N 个结点21.合并两个有序链表23.合并 K 个升序链表141.环形链表142.环形链表 II160.相交链表876.链表的中间结点25.K 个⼀组翻转链表83.删除排序链表中的重复元素92.反转链表 II234.回⽂链表2. 两数相加 (中等)一次遍历计算完成,需注意:构建空的头结点,不用处理一开始指针指向null的情况执行加法,考虑进位的情况。新链表要记得移动。两个链表不等长读完两个链表后,最后一次进位仍要处理21. 合并

2022-02-19 16:34:27 581

原创 JS:二分搜索(3)—— 子序列、信封嵌套、阶乘数的0

35. 搜索插入位置 (简单)给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。请必须使用时间复杂度为 O(log n) 的算法。就是普通的二分搜索,目标值不存在时,返回的是left ,因为结束条件是left = right + 1,结束的前一步分情况:left + 1 = right 或者 left = right;然后在具体每种if else情况下,left的下标都是一下特点。392. 判断子序列 (简单)双指针:v.

2022-02-18 03:32:46 523

原创 JS:二分搜索(2)——实际应用

前文总结的二分搜索代码框架仅仅局限于「在有序数组中搜索指定元素」这个基本场景,具体的算法问题没有这么直接,可能你都很难看出这个问题能够用到二分搜索。查找目标值的二分搜索问题中,x就是下标索引,f(x)返回数组下标对应的值,target就是目标值。看完文章,其实是不知道它想怎样的,做完题就深感体会了。875. 爱吃香蕉的珂珂 (中等) fail这里需要绕一下,索引并不是piles这个无序的数组的下标,因为求的是最小速度,所以速度才是索引——自变量x。f(x)是和target一个等级的,targ

2022-02-16 16:20:20 454

原创 JS:二分搜索(1)——查找目标值

二分搜索结束后,数组的题目或者技巧就差不多入门了。阅读 算法小抄按照网站的做题路线。二分查找思想就是左右指针,但是二分查找真正的坑根本就不是那个细节问题,而是在于到底要给 mid 加一还是减一,while 里到底用 <= 还是 <。所以要明确「搜索区间」而我的烦恼一直是,二分插入排序时,left还是right才是要插入的地方。防止溢出:int mid = left + (right - left) / 2;对于JavaScript,得到mid带有小数二、寻找左侧边界的二分搜索

2022-02-15 23:05:05 562

原创 JS:滑动窗口算法 (下集)

上集的两道题目,分开两集的目的是,尽可能自己手写一遍模板。438. 找到字符串中所有字母异位词 (中等)其实就是在567. 字符串的排列的基础上,找到 S 中所有 T 的排列,返回它们的起始索引。/** * @param {string} s * @param {string} p * @return {number[]} */var findAnagrams = function(s, p) { let need = {}, window = {}; for (let c

2022-02-15 17:23:48 498

原创 JS:滑动窗口算法 (上集)

建议先读文章,本文就解决一类最难掌握的双指针技巧:滑动窗口技巧。难度在于各种细节问题,比如:如何向窗口中添加新元素,如何缩小窗口,在窗口滑动的哪个阶段更新结果。

2022-02-15 01:32:11 882

原创 JS:数组双指针,优势洗牌,区间交集(fail)

基本的数组双指针的题目大致如下:剩下两题,两题都是思想为主,与双指针沾边。优势洗牌 (中等),fail田忌赛马,打得过就打,打不过就拿自己的垃圾和对方的精锐互换。我原本的思路:是不对nums2排序,遍历nums2,每次都要与nums1逐个比较,而且涉及nums1的删除操作,感觉也行不通。nums2 中元素的顺序不能改变,因为计算结果的顺序依赖 nums2 的顺序,所以不能直接对 nums2 进行排序,而是利用其他数据结构(保存原来索引和值的对象)来辅助。[1,10,4,11]map转成数组[

2022-02-11 17:50:29 613

原创 JS:双指针解决数组问题,接雨水

26. 删除有序数组中的重复项 (简单)给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。/** * @param {number[]} nums * @return {number} */var removeDuplicates = function(nums) { let i=0, len=nums.length; f

2022-02-11 01:49:53 706

原创 2Sum 3Sum 4Sum 问题

摘自labuladong两数之和 扩展版nums = [1,3,1,2,2,3], target = 4问题一:[1,3] 和 [3,1] 就算重复,通过先排序再双指针可实现结果的按顺序排列。问题二:nums = [1,1,1,2,2,3,3], target = 4[1,3] 肯定会重复出问题的地方在于 sum == target 条件的 if 分支,当给 res 加入一次结果后,lo 和 hi 不应该改变 1 的同时,还应该跳过所有重复的元素: // 记录索引 lo 和 hi

2022-02-09 23:48:08 348

原创 二维数组的花式遍历

48. 旋转图像给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。观察图可知办法,怎么将数字5移到目的地,(先行逆序,再对角线对称)网站则先对角线对称,再行逆序,感觉这样难发现。JS的整除运算reverse() 方法将改变原始数组。难点:对角线为对称轴交换元素正对角线,遍历右上三角for (int i = 0; i < n; i++) { for (int j = i; j < n; j++) { swap(m

2022-02-08 16:07:17 429

原创 JavaScript刷题——双指针、数组的内置方法

快慢指针141.环形链表给你一个链表的头节点 head ,判断链表中是否有环。因为fast指针一次走两步,注意判断条件while(fast!=null && fast.next!=null)判断是否同一个节点slow == fast142.环形链表 II给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。以前使用python的解析:fast和slow第一次在环内相遇。slow1在头结点开始和slow继续环内移动,第二次在环入口相遇。至于为什么

2022-01-10 23:10:12 544

原创 JavaScript刷题——前缀和数组、差分数组

303.区域和检索 - 数组不可变已知一维数组长度,创建数组:const preSum = new Array(nums.length + 1);而我是先赋值第一个元素,再push添加新元素:this.arr = [nums[0]]304.二维区域和检索 - 矩阵不可变创建二维数组:const preSum = new Array(rows)for (let i = 0; i < rows; i++) { preSum[i] = new Array(cols)}560.和为

2022-01-10 13:14:18 966

空空如也

空空如也

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

TA关注的人

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