自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 LeetCode | 22. 括号生成 | 回溯

22. 括号生成:数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。示例:示例 1:输入:n = 3输出:["((()))","(()())","(())()","()(())","()()()"]示例 2:输入:n = 1输出:["()"] 解决方案:var generateParenthesis = function (n) { const arr = []; const dfs = (a, b, c)

2021-05-24 13:00:24 131

原创 LeetCode | 不同路径 II

不同路径 II:一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?问题描述:输入:obstacleGrid = [[0,0,0],[0,1,0],[0,0,0]]输出:2解释:3x3 网格的正中间有一个障碍物。从左上角到右下角一共有 2 条不同的路径:1. 向右 -> 向右 -

2021-05-23 17:05:50 125

原创 LeetCode | 面试题 17.11. 单词距离

面试题 17.11. 单词距离:有个内含单词的超大文本文件,给定任意两个单词,找出在这个文件中这两个单词的最短距离(相隔单词数)。如果寻找过程在这个文件中会重复多次,而每次寻找的单词不同,你能对此优化吗?示例:输入:words = ["I","am","a","student","from","a","university","in","a","city"], word1 = "a", word2 = "student"输出:1 解决方案:通过队列的方式,存在word1或word2,且队

2021-04-14 13:17:37 264

原创 LeetCode | 面试题 01.05. 一次编辑

面试题 01.05. 一次编辑:字符串有三种编辑操作:插入一个字符、删除一个字符或者替换一个字符。 给定两个字符串,编写一个函数判定它们是否只需要一次(或者零次)编辑。示例 :示例 1:输入: first = "pale"second = "ple"输出: True 示例 2:输入: first = "pales"second = "pal"输出: False 解决方案:/** * @param {string} first * @param {string}

2021-04-07 22:33:29 121

原创 LeetCode | 1249. 移除无效的括号

1249. 移除无效的括号:给你一个由 ‘(’、’)’ 和小写字母组成的字符串 s。你需要从字符串中删除最少数目的 ‘(’ 或者 ‘)’ (可以删除任意位置的括号),使得剩下的「括号字符串」有效。请返回任意一个合法字符串。有效「括号字符串」应当符合以下 任意一条 要求:空字符串或只包含小写字母的字符串可以被写作 AB(A 连接 B)的字符串,其中 A 和 B 都是有效「括号字符串」可以被写作 (A) 的字符串,其中 A 是一个有效的「括号字符串」示例:示例 1:输入:s = "lee(

2021-03-31 22:13:13 99

原创 LeetCode | 49. 字母异位词分组

49. 字母异位词分组:问题描述:给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。示例:输入: ["eat", "tea", "tan", "ate", "nat", "bat"]输出:[ ["ate","eat","tea"], ["nat","tan"], ["bat"]] 说明:所有输入均为小写字母。不考虑答案输出的顺序。解决方案:/** * @param {string[]} strs * @return {st

2021-03-26 21:08:35 62

原创 LeetCode | 46. 全排列

46. 全排列:给定一个 没有重复 数字的序列,返回其所有可能的全排列。实例:输入: [1,2,3]输出:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]] 解决方案:遍历原数组, 根据每项索引追加多次数组, 再利用hashmap 幂等去重例【1】 -> [1,2][1] -> [2,1]/** * @param {number[]} nums * @return {numbe

2021-03-19 15:46:01 64

原创 LeetCode | 1636. 按照频率将数组升序排序

1636. 按照频率将数组升序排序:给你一个整数数组 nums ,请你将数组按照每个值的频率 升序 排序。如果有多个值的频率相同,请你按照数值本身将它们 降序 排序。请你返回排序后的数组。示例:示例 1:输入:nums = [1,1,2,2,2,3]输出:[3,1,1,2,2,2]解释:'3' 频率为 1,'1' 频率为 2,'2' 频率为 3 。示例 2:输入:nums = [2,3,1,3,2]输出:[1,3,3,2,2]解释:'2' 和 '3' 频率都为 2 ,所以它们之间

2021-03-18 22:18:02 146

原创 LeetCode | 92. 反转链表 II

92. 反转链表 II:给你单链表的头节点 head 和两个整数 left 和 right ,其中 left <= right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 。问题描述:示例 1:输入:head = [1,2,3,4,5], left = 2, right = 4输出:[1,4,3,2,5]示例 2:输入:head = [5], left = 1, right = 1输出:[5] 提示:链表中节点数目为 n1 <=

2021-03-18 22:11:36 77

原创 LeetCode | 面试题 01.06. 字符串压缩

面试题 01.06. 字符串压缩:字符串压缩。利用字符重复出现的次数,编写一种方法,实现基本的字符串压缩功能。比如,字符串aabcccccaaa会变为a2b1c5a3。若“压缩”后的字符串没有变短,则返回原先的字符串。你可以假设字符串中只包含大小写英文字母(a至z)。试例:示例1: 输入:"aabcccccaaa" 输出:"a2b1c5a3" 示例2: 输入:"abbccd" 输出:"abbccd" 解释:"abbccd"压缩后为"a1b2c2d1",比原字符串长度更长。

2021-03-17 20:46:50 111

原创 LeetCode | 面试题 10.02. 变位词组

面试题 10.02. 变位词组:编写一种方法,对字符串数组进行排序,将所有变位词组合在一起。变位词是指字母相同,但排列不同的字符串。示例:示例:输入: ["eat", "tea", "tan", "ate", "nat", "bat"],输出:[ ["ate","eat","tea"], ["nat","tan"], ["bat"]] 解决方案:/** * @param {string[]} strs * @return {string[][]} */var g

2021-03-13 18:02:38 98

原创 LeetCode | 3. 无重复字符的最长子串

3. 无重复字符的最长子串:给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。事例:示例 1:输入: s = "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: s = "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: s = "pwwkew"输出: 3解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。 请注意,你的

2021-03-12 20:02:49 79

原创 LeetCode | 35. 搜索插入位置

35. 搜索插入位置:给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。事例:示例 1:输入: [1,3,5,6], 5输出: 2示例 2:输入: [1,3,5,6], 2输出: 1示例 3:输入: [1,3,5,6], 7输出: 4示例 4:输入: [1,3,5,6], 0输出: 0 解决方案:有趣,合并排序查找就行/** * @param {number[]

2021-03-11 19:42:34 68

原创 LeeTCode| 219. 存在重复元素 II

219. 存在重复元素 II:给定一个整数数组和一个整数 k,判断数组中是否存在两个不同的索引 i 和 j,使得 nums [i] = nums [j],并且 i 和 j 的差的 绝对值 至多为 k。事例:示例 1:输入: nums = [1,2,3,1], k = 3输出: true示例 2:输入: nums = [1,0,1,1], k = 1输出: true示例 3:输入: nums = [1,2,3,1,2,3], k = 2输出: false原因分析:提示:这里填

2021-03-11 19:19:15 61

原创 LeetCode | 136. 只出现一次的数字

136. 只出现一次的数字给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1 示例 2:输入: [4,1,2,1,2]输出: 4解决方案:1.获取每个数字出现评率,提取出现唯一/** * @param {number[]} nums * @return {number} */var singleNumbe

2021-03-11 00:29:29 68

原创 LeetCode | 1047. 删除字符串中的所有相邻重复项

1047. 删除字符串中的所有相邻重复项:给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。在 S 上反复执行重复项删除操作,直到无法继续删除。在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。示例:输入:"abbaca"输出:"ca"解释:例如,在 "abbaca" 中,我们可以删除 "bb" 由于两字母相邻且相同,这是此时唯一可以执行删除操作的重复项。之后我们得到字符串 "aaca",其中又只有 "aa" 可以执行重复项删除操作,所以最后的字符

2021-03-09 19:39:11 78

原创 LeetCode | 1630. 等差子数组 | 排序

1630. 等差子数组:如果一个数列由至少两个元素组成,且每两个连续元素之间的差值都相同,那么这个序列就是 等差数列 。更正式地,数列 s 是等差数列,只需要满足:对于每个有效的 i , s[i+1] - s[i] == s[1] - s[0] 都成立。例如,下面这些都是 等差数列 :1, 3, 5, 7, 97, 7, 7, 73, -1, -5, -9下面的数列 不是等差数列 :1, 1, 2, 5, 7给你一个由 n 个整数组成的数组 nums,和两个由 m 个整数组成的数组 l

2021-03-05 12:48:59 142

原创 React导入导出Excel

导出:import ExportJsonExcel from 'js-export-excel';export const detailsDataKey: DetailsDataKey= { sampleName: "试样名称", type: "型号、规格、等级、牌号", ... }export function useExportExcel() { // 导出状态 const [state, setState] = useState<boolean>

2021-03-04 13:33:18 969 1

原创 LeetCode | 1502. 判断能否形成等差数列 |排序

1502. 判断能否形成等差数列:给你一个数字数组 arr 。如果一个数列中,任意相邻两项的差总等于同一个常数,那么这个数列就称为 等差数列 。如果可以重新排列数组形成等差数列,请返回 true ;否则,返回 false 。示例 1:输入:arr = [3,5,1]输出:true解释:对数组重新排序得到 [1,3,5] 或者 [5,3,1] ,任意相邻两项的差分别为 2 或 -2 ,可以形成等差数列。 示例 2:输入:arr = [1,2,4]输出:false解释:无法通过重新排

2021-03-04 12:50:27 139 1

原创 Leetcode | 1528. 重新排列字符串 | 字符串篇

1528. 重新排列字符串:给你一个字符串 s 和一个 长度相同 的整数数组 indices 。请你重新排列字符串 s ,其中第 i 个字符需要移动到 indices[i] 指示的位置。返回重新排列后的字符串。示例 1:输入:s = "codeleet", indices = [4,5,6,7,0,2,1,3]输出:"leetcode"解释:如图所示,"codeleet" 重新排列后变为 "leetcode" 。 示例 2:输入:s = "abc", indices = [0,1,

2021-03-03 13:00:42 133

原创 LeeTCode | 304. 二维区域和检索 - 矩阵不可变 | 矩阵

304. 二维区域和检索 - 矩阵不可变:给定一个二维矩阵,计算其子矩形范围内元素的总和,该子矩阵的左上角为 (row1, col1) ,右下角为 (row2, col2) 。上图子矩阵左上角 (row1, col1) = (2, 1) ,右下角(row2, col2) = (4, 3),该子矩形内元素的总和为 8示例:给定 matrix = [ [3, 0, 1, 4, 2], [5, 6, 3, 2, 1], [1, 2, 0, 1, 5], [4, 1, 0, 1, 7],

2021-03-02 18:19:42 105

原创 LeetCode | 303. 区域和检索 - 数组不可变 |

303. 区域和检索 - 数组不可变:给定一个整数数组 nums,求出数组从索引 i 到 j(i ≤ j)范围内元素的总和,包含 i、j 两点。实现 NumArray 类:NumArray(int[] nums) 使用数组 nums 初始化对象int sumRange(int i, int j) 返回数组 nums 从索引 i 到 j(i ≤ j)范围内元素的总和,包含 i、j 两点(也就是 sum(nums[i], nums[i + 1], … , nums[j]))示例:输入:["Num

2021-03-01 12:43:38 42

原创 LeetCode | 896. 单调数列 | 排序

896. 单调数列:如果数组是单调递增或单调递减的,那么它是单调的。如果对于所有 i <= j,A[i] <= A[j],那么数组 A 是单调递增的。 如果对于所有 i <= j,A[i]> = A[j],那么数组 A 是单调递减的。当给定的数组 A 是单调数组时返回 true,否则返回 false。示例 1:输入:[1,2,2,3]输出:true示例 2:输入:[6,5,4,4]输出:true示例 3:输入:[1,3,2]输出:false示例 4:

2021-02-28 19:13:51 55

原创 LeetCode | 561. 数组拆分 | 数组篇

561. 数组拆分:给定长度为 2n 的整数数组 nums ,你的任务是将这些数分成 n 对, 例如 (a1, b1), (a2, b2), …, (an, bn) ,使得从 1 到 n 的 min(ai, bi) 总和最大。返回该 最大总和 。示例 1:输入:nums = [1,4,3,2]输出:4解释:所有可能的分法(忽略元素顺序)为:1. (1, 4), (2, 3) -> min(1, 4) + min(2, 3) = 1 + 2 = 32. (1, 3), (2, 4) -&g

2021-02-21 13:36:20 113

原创 LeetCode | 566. 重塑矩阵 | 数组篇

566. 重塑矩阵:在MATLAB中,有一个非常有用的函数 reshape,它可以将一个矩阵重塑为另一个大小不同的新矩阵,但保留其原始数据。给出一个由二维数组表示的矩阵,以及两个正整数r和c,分别表示想要的重构的矩阵的行数和列数。重构后的矩阵需要将原始矩阵的所有元素以相同的行遍历顺序填充。如果具有给定参数的reshape操作是可行且合理的,则输出新的重塑矩阵;否则,输出原始矩阵。示例 1:输入: nums = [[1,2], [3,4]]r = 1, c = 4输出: [[1,2,3

2021-02-21 13:26:46 145 1

原创 LeetCode | 17.10 主要元素 | 数组篇

面试题 17.10. 主要元素:数组中占比超过一半的元素称之为主要元素。给定一个整数数组,找到它的主要元素。若没有,返回-1。示例 1:输入:[1,2,5,9,5,9,5,5,5]输出:5示例 2:输入:[3,2]输出:-1示例 3:输入:[2,2,1,1,1,2,2]输出:2解答:思路:找到出现次数最多的元素;若它大于数组的一半则返回元素,否则返回-1;/** * @param {number[]} nums * @return {number} */var maj

2021-02-21 13:16:27 44

原创 React Hoc

React Hoc(HOC)是React中的高阶组件,用来重用组件逻辑,高阶组件就是一个函数,且该函数接受一个组件作为参数,并返回一个新的组件。 有点类似给原组件打补丁升级强化。使用:// 定义改变bool的hoc应用function TestHoc(WrappedComponent) { const useA = (props) => { const [state, setState] = useState(false); const newProps

2021-02-01 17:30:15 107

原创 Vue | React 导出world

vue 版List item提示:这里简述项目相关背景:例如:项目场景:示例:通过蓝牙芯片(HC-05)与手机 APP 通信,每隔 5s 传输一批传感器数据(不是很大)问题描述:提示:这里描述项目中遇到的问题:例如:数据传输过程中数据不时出现丢失的情况,偶尔会丢失一部分数据APP 中接收数据代码:@Override public void run() { bytes = mmInStream.read(buffer); m

2021-01-27 19:03:22 762 1

原创 electron打包

electron 打包electron 打包electron 打包主流electron打包方式有electron-packager和electron-builder,本篇使用electron-builder打包;官方推荐使用yarn一,它可以更好地处理依赖关系。二,可以使用 yarn clean 帮助减少最后构建文件的大小。安装 npm install -g yarn --registry=https://registry.npm.taobao.org安装 electron 以及 elect

2021-01-27 18:23:16 420

原创 THREE 自定义文字弹框

THREE 自定义文字弹框文字部分这里采用将文字绘制到画布中,并将其用作Texture(纹理) const textStyle = ( text ) => { let width = 512, height = 256; let canvas = document.createElement('canvas'); canvas.width = width; canvas.height = height; let ct

2021-01-08 16:15:41 714

原创 THREE 点击事件

THREE 点击事件由于浏览器是一个2d视口,而在里面显示three.js的内容是3d场景,所以,现在有一个问题就是如何将2d视口的x和y坐标转换成three.js场景中的3d坐标。此时THREE.Raycaster就出现了,可以理解为从你点击的位置上向z轴发射光线,光线与模型交互则为可以拾取;问题描述:如何点击事件var raycaster = new THREE.Raycaster();var mouse = new THREE.Vector2();function onMouseMove

2021-01-08 15:52:26 1231 2

原创 vue3.0 新特性之 setup

vue3.0 新特性之 - setup 之 一setup应该如何使用?生命周期ref, reactive - datasetup - methodssetup - watchmixin的优化setup应该如何使用?直接定义setup() {} 就可以使用了(doge)下面将对比2.0的一些使用方式;需注意:由于在执行 setup函数的时候,还没有执行 Created 生命周期方法,所以在 setup 函数中,无法使用 data 和 methods 的变量和方法setup函数只能是同步的不能

2020-11-30 16:40:05 2399

原创 node.js express 入门之连接mysql

Express 入门:一: 搭建环境安装node下载地址安装express 框架 npm i express -g(全局安装)安装mysql - 这里使用phpStudy 集成环境带的MySQL安装mysql包 npm i mysql --save二: 项目创建运行express 项目名称 (如 express demo)npm start运行 默认3000端口三: 连接数据库配置数据库参数//./dbconfig/dbconfig.jsmodule.expor

2020-08-06 22:00:26 197

原创 Vue router 权限整理

Vue router 权限整理权限控制方式与思路与实现权限控制方式与思路与实现首先我们把权限分为几部分,大体方式如下图所示:下面根据一个小demo展开demo下载地址这里采用菜单与路由分离,菜单由后端返回的方式实现实现思路:简单说就是设置俩份路由表,一份基础路由,一份权限路由保存在后端,根据用户登录权限返回router.addRoutes() 动态添加,根据这份路由权限信息可以对菜单和按钮进行管理;界面权限可通过router.beforeEach 跳转实现 ,请求/响应可通过axios拦截实

2020-08-05 22:19:02 1984

原创 render 函数基础 | Slot与scopedSlots使用

render 函数入门基础createElement 参数使用 JavaScript 代替模板功能基础createElement 参数Vue中的Render函数中有一个参数,这个参数是一个函数通常我们叫做h。其实这个h叫做createElement。Render函数将createElement的返回值放到了HTML中createElement这个函数中有3个参数事例:createElement(‘div’, {} ,‘我是内容呦’)第二个参数(类型是对象,可选):用于设置这个DOM的一些样式、属

2020-07-31 20:32:02 6809 2

原创 手把手教您基础Vue 插件的开发与发布

手把手教您Vue 插件的开发与发布Vue 插件的介绍插件的使用方法编写好插件后发布操作使用插件Vue 插件的介绍插件通常用来为 Vue 添加全局功能。插件的功能范围没有严格的限制,使用插件是让代码不那么零散,看起来更有整体性。官方解释一般有下面几种:加全局方法或者属性。如: vue-custom-element添加全局资源:指令/过滤器/过渡等。如 vue-touch通过全局混入来添加一些组件选项。如 vue-router添加 Vue 实例方法,通过把它们添加到 Vue.prototype

2020-07-28 00:22:50 170

原创 原生JavaScript实现多图上传预览

原生JavaScript实现多图上传预览html部分<tr> <td>上传多图:</td> <td class='min_he' > <div class="new_files"> <img src="../static/front/image/a11.png" class="add-img"> &lt...

2020-04-16 18:21:14 179

空空如也

空空如也

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

TA关注的人

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