- 博客(189)
- 收藏
- 关注
原创 win 修改 git 登录凭证
在使用 HbuilderX IDE 开发时,有一次使用 git push 代码时,账号密码输入错误,导致后续的 git 操作都出现账号密码验证失败。但又找不到 git 账号密码重新设置的入口。解决方案控制面板 -> 用户账户 -> 凭据管理器 -> Windows 凭据 -> 找到自己的 git 凭据 -> 编辑(修改账号密码)...
2021-05-07 16:00:34
1887
转载 uni-app 系统目录文件上传(非只图片和视频)解决方案
uni-app系统目录文件上传(非只图片和视频)解决方案安卓端 系统目录文件选取和路径获取 可以看这篇
2021-01-17 16:06:11
681
原创 css 实现水平垂直居中
一、通过设置子元素.parent{ position: absolute; /* 非static即可 */ width: 500px; height: 300px;}子元素知道 width, heightposition, top, left, transform.child{ width: 100px; height: 50px; position: absolute; top: 50%; left: 50%; transform: translate(-50px, -2
2020-12-24 22:49:30
376
原创 旋转图像
leetcode 48题 [medium]中:旋转图像英:Rotate Image题解11. 思路:从外层到里层一层一层旋转2. 时间复杂度:O(n²)3. 空间复杂度:O(1)4. 实现/** * @param {number[][]} matrix * @return {void} Do not return anything, modify matrix in-place instead. */var rotate = function(matrix) { le.
2020-12-19 16:06:17
261
1
原创 找不同
leetcode 389题 [easy]中:找不同英:Find The Difference题解11. 思路:ASCII,求和,求差两个字符串分别对各ASCII求和计算和值的差值2. 时间复杂度:O(n)3. 空间复杂度:O(1)4. 实现/** * @param {string} s * @param {string} t * @return {character} */var findTheDifference = function(s, t) { let.
2020-12-18 18:07:27
220
1
原创 只出现一次的数字
leetcode 136题 [easy]中:只出现一次的数字英:Single Number题解1. 思路:位运算(异或)a⨁0=aa \bigoplus 0 = aa⨁0=a:与0异或,等于原数本身a⨁a=0a \bigoplus a = 0a⨁a=0:自己与自己异或结果为0a⨁b⨁c=a⨁c⨁ba \bigoplus b \bigoplus c = a \bigoplus c \bigoplus ba⨁b⨁c=a⨁c⨁b:异或操作遵循交换律和结合律2. 时间复杂度:O(n)3..
2020-12-18 17:36:28
215
1
原创 字母异位词分组
leetcode 49题 [medium]中:字母异位词分组英:Group Anagrams一、题解11. 思路:排序(字典序)2. 时间复杂度:O(n * mlogm) n: 数组长度,m: 字符串最大长度3. 空间复杂度:O(n * k) n: 数组长度,k: 字符串平均长度4. 实现/** * @param {string[]} strs * @return {string[][]} */var groupAnagrams = function(strs) { //.
2020-12-14 23:10:21
246
原创 javascript 暂时性死区
暂时性死区:ES6之前JS的一个BUG(美其名曰暂时性死区)。在使用 typeof 等运算符操作一个未声明的变量时,不会报错,该变量的值以 undefined 作处理ES6:ES6的变量声明方法(let, const, class…)解决了暂时性死区问题,会进行显式报错。ES6之前的暂时性死区console.log(typeof a); // undefined (no error)ES6之后的变量声明console.log(typeof a); // Uncaught Refe..
2020-12-13 17:37:46
1168
原创 浏览器 如何在老版本浏览器环境下调试代码
学习过程中经常看到,“老版本环境下的执行结果是balabala…”,但现在使用的浏览器大都是新版本浏览器,就算使用IE的话,也都是IE11以上,那我们要如何进入老版本环境进行代码调试呢?利用IE浏览器的仿真选项卡打开IE(Internet Explorer)浏览器F12 打开开发者工具切换到 仿真 选项卡切换 “文档模式” 为10或以下...
2020-12-13 15:43:07
600
原创 数组中出现次数超过一半的数字
剑指Offer 39 数组中出现次数超过一半的数字 [easy]一、题解11. 思路:hash字典hash 字典统计数量,数量大于数组长度一半时返回结果2. 时间复杂度:O(n)3. 空间复杂度:O(n)二、题解21. 思路:排序排序排序后的中位数一定是的结果2. 时间复杂度:O(nlogn)3. 空间复杂度:O(logn) 排序递归栈空间4. 实现/** * @param {number[]} nums * @return {number} */var ma.
2020-12-13 11:47:16
176
1
原创 二进制中1的个数
剑指Offer 15 二进制中1的个数 [easy]一、题解11. 思路对数字循环进行取模(奇偶判断)和除以2(无符号右移)的操作使用位运算加快运算速度2. 时间复杂度:O(logn) 其实就是二进制数的位数log2n+1log_2n + 1log2n+13. 空间复杂度:O(1)4. 实现/** * @param {number} n - a positive integer * @return {number} */var hammingWeight = funct.
2020-12-13 10:49:15
201
原创 LRU 缓存机制
leetcode 146题 [medium]中:LRU 缓存机制英:LRU Cache题解1. 思路使用双向链表,链表头为下一次需要剔除出缓存的数据,尾部为最近操作过的数据。(使得put为O(1)的时间复杂度)LRU未满,直接尾部添加新元素LRU满,删除头节点,尾部新增新数据使用原生对象(hash),键值对使得数据键与链表节点一一对应(使得get为O(1)的时间复杂度)访问LRU,借助hash获取到相应的链表结点,借助链表的双向指针更新链表数据顺序2. 时间复杂度:.
2020-12-09 12:11:57
419
1
原创 将数组拆分成斐波那契序列
leetcode 842题 [medium]中:将数组拆分成斐波那契序列英:Split Array Into Fibonacci Sequence题解1. 思路(回溯 + 剪枝)其实主要就是确定斐波那契数列的第1、2个数,后边的相应就确定了2. 时间复杂度:O(n²)3. 空间复杂度:O(n) 记录结果4. 实现/** * @param {string} S * @return {number[]} */var splitIntoFibonacci = funct.
2020-12-08 11:58:54
313
原创 最大交换
leetcode 670 [medium]中:最大交换英:Maximum Swap题解1. 思路(栈 + 贪心)从末尾遍历num各位,若当前元素比栈顶元素大(空栈直接入栈),入栈。直到num头或者当前位为9。从起始遍历num各位,比较当前位于栈顶元素的大小和位置关系(1)若当前元素比栈顶元素小,且满足当前元素在高位,栈顶元素在低位,则交换,返回结果;(2)若不满足高低位关系,则栈顶元素出栈,继续比较;(3)若栈为空,说明无需交换;2. 时间复杂度:O(n)3. 空间复杂度:O.
2020-12-07 19:46:26
397
原创 旋转数组的最小数字
剑指Offer 11 [easy]题解1. 思路:二分法找右侧比numbers[0]小的左边界2. 时间复杂度:O(logn)3. 空间复杂度:O(1)4. 实现/** * @param {number[]} numbers * @return {number} */var minArray = function(numbers) { // 预处理 if(numbers.length <= 1) return numbers[0]; // 二分.
2020-12-07 12:22:11
135
原创 青蛙跳台阶问题
剑指 Offer 10 [easy]题解1. 思路:动态规划状态转移方程:dp[n] = dp[n-1] + dp[n-2]从终点开始考虑。青蛙最后一次跳1步的情况:情况数 = 有 n-1 阶台阶的情况青蛙最后一次跳2步的情况:情况数 = 有 n-2 阶台阶的情况dp[0] = 1, dp[1] = 12. 时间复杂度:O(n)3. 空间复杂度:O(1)4. 实现/** * @param {number} n * @return {number} */.
2020-12-07 11:34:55
163
原创 翻转矩阵后的得分
leetcode 861 [medium]中:翻转矩阵后的得分英:Score After Flipping Matrix题解1. 思路:贪心旋转行使得第一列全为1旋转列使得每列1最多2. 时间复杂度:O(n * m)n: 行数;m:列数第一次遍历完成 “旋转行使得第一列全为1”;同时统计每一列1的个数第二次遍历完成 “旋转列使得每列1最多”3. 空间复杂度:O(m)第一次遍历后记录每一列1的个数4. 实现/** * @param {number[][]} A.
2020-12-07 10:53:53
168
原创 反转链表
剑指offer 24 反转链表 [easy] 题解1思路:栈时间复杂度:O(n) O(2 * n) 入栈 + 出栈空间复杂度:O(n) 栈空间实现/** * Definition for singly-linked list. * function ListNode(val) { * this.val = val; * this.next = null; * } *//** * @param {ListNode} head * @retur.
2020-12-06 20:56:14
181
原创 杨辉三角
一、什么是杨辉三角杨辉三角:是二项式系数在三角形中的一种几何排列。杨辉三角的每个数等于它上方两数之和。二、求杨辉三角第n行杨辉三角第n行第m个数的值为组合数 Cn−1m−1C_{n-1}^{m-1}Cn−1m−1 的结果代码leetcode 119题 杨辉三角Ⅱ/** * @param {number} rowIndex * @return {number[]} */var getRow = function(rowIndex) { /** * 数
2020-12-06 11:48:58
271
原创 javascript 变量的声明与提升
一、var没有块的概念(可以跨块访问,不能跨函数访问)未初始化时默认为 undefined变量提升可重复定义(使用变量提升解释)变量提升var 声明的变量在js中会经历了两个阶段编译阶段进行变量声明提升执行阶段进行赋值下面举几个栗子// 栗子1console.log(value);var value = 8;console.log(value);// js进行变量提升后实际的执行顺序是var value;console.log(value);value
2020-12-02 19:48:54
189
原创 数据结构 单调栈
一、什么是单调栈单调栈是一种特殊的栈,栈内元素满足从栈顶到栈底单调有序单调递增栈:元素从栈顶到栈底单调递增单调递减栈:元素从栈顶到栈底单调递减1. 单调栈示例从数组 [5, 4, 2, 3, 6, 7, 1] 构建单调栈单调递增栈单调递增栈:栈顶到栈底元素单调递增(栈顶为栈内最小元素)栈为空或者当前元素比栈顶元素小:当前元素直接入栈当前元素比栈顶元素大:栈顶元素出栈,当前元素重新入栈步骤单调栈内容描述0[ ]栈初始化1[ 5 ]5入
2020-12-02 16:35:10
280
原创 移掉K位数字
leetcode 402题 [medium]中:移掉K位数字英:Remove K Digits题解算法思路(1)数字的大小是由高位(百位相对于十、个位为高位)决定的,所以我们考虑从左到右扫描删除num中的数字;(2)当我们删除num中的某一位时,下一位将会代替该位,而要使得最后的数值最小,那么删除位应当具有以下特征:替换位要比删除位小算法步骤(1)从左到右扫描每一位数字,若当前数字比前一数字小,则删除前一数字;删除后,当前数字继续与前一数字比较,直到当前数字比前一数字大或者前一.
2020-12-02 16:02:01
181
原创 在排序数组中查找元素的第一个和最后一个位置
leetcode 34题 [medium]中:在排序数组中查找元素的第一个和最后一个位置英:Find First And Last Position Of Element In Sorted Array题解两次(边界)二分查找(二分查找详解可以看看这篇博客)时间复杂度:O(logn)空间复杂度:O(1)实现/** * @param {number[]} nums * @param {number} target * @return {number[]} */v.
2020-12-01 11:47:03
134
原创 javascript 深拷贝详解(多版本深拷贝)
简单对象的深复制(不含函数)let newObj = JSON.parse(JSON.stringify(obj));递归实现复杂对象的深复制let deepCopy = function(_obj){ /** * 对复杂对象进行深复制 */ let result = typeof _obj === 'list'? []: {}; for(let key in _ob...
2020-11-30 17:00:12
251
原创 重构字符串
leetcode 767题 [medium]中:英:题解判断是否具有重构字符串(1)统计字符串中的最大字符重复数 most(2)当且仅当 剩余字符(S.length - most) 无法填满 重复字符形成的间隔(most - 1) 时,重构不可行构建重构字符串(1)统计字符串中最大字符重复数时会构建一个查询字典,键为字符,值为字符串中该字符出现的次数(2)使用具有最大重复数的字符形成的重复字符串为基串(3)依次将每一种剩余字符插入到基串字符单元后(4)到达基串末尾,若还有剩.
2020-11-30 13:52:05
215
原创 三角形的最大周长
leetcode 976题 [easy]中:三角形的最大周长英:Largest Perimeter Triangle题解1全排序 + 贪心时间复杂度:O(nlogn) 排序开销空间复杂度:O(logn) 快排递归栈开销实现/** * @param {number[]} A * @return {number} */var largestPerimeter = function(A) { // 预处理(无) // 排序 A.sort((a.
2020-11-29 11:44:55
219
原创 翻转对
leetcode 493题 [hard]中:翻转对英:Reverse Pairs题解1:归并法假设当前两个子序列都排好序且统计了翻转对数量,那么对这两个子序列合并只需要再统计 nums[i] 在左子序列,nums[j] 在右子序列的翻转对数即可。(递归归并思想)子序列排序的目的:优化翻转对的计算,具体可见代码注释时间复杂度:O(nlogn)(归并法分割开销 O(logn))* [(子序列计算翻转对开销 O(n))+ (子序列排序开销 O(n))] => O(nlogn.
2020-11-28 13:04:22
192
原创 四数相加 II
leetcode 454题 [medium]中:四数相加 II英:4Sum II题解四数之和问题 转为 两个两数之和的求和问题(1)将四个数组分为两组,每组两个数组。对于每组的两个数组,分别记录其求和的各种和值及相应的组合数。(2)最后问题就转为,对这两个求和记录再次进行求和,记录使得求和结果为0的组合数。优化(1)只需记录一个组合的结果即可,另一个组合直接在遍历构建的过程中使用第一个组合的结果进行和零的判断(2)第一个组合的键直接记录和值的相反数(3)使用 Map 代替 .
2020-11-27 17:23:36
323
原创 为运算表达式设计优先级
leetcode 241题 [medium]中:为运算表达式设计优先级英:Different Ways to Add Parentheses题解核心:递归分治 + 记事本优化实现/** * @param {string} input * @return {number[]} */var diffWaysToCompute = function(input) { /** * 递归分治法 + 记事本优化 */ // 预处理 -- 无 .
2020-11-26 19:38:52
150
原创 javascript 类数组
一、什么是类数组具有 length 属性,且其属性为非负整数(类索引)的对象不具有数组的方法二、常见的类数组函数的 arguments 对象DOM 对象列表(比如通过 document.querySelectorAll 得到的列表)三、类数组与数组的相互转换1. 数组转类数组Array.prototype.push.apply(arrayLike, array)var array = [1,2,3];var arrayLike = {};Array.prototype.pu
2020-11-25 18:05:00
261
原创 最小高度树
leetcode 310 题 [medium]中:最小高度树英: Minimum Height Trees题解核心:拓扑排序法时间复杂度:O(n*minH)空间复杂度:O(n)/** * @param {number} n * @param {number[][]} edges * @return {number[]} */var findMinHeightTrees = function(n, edges) { /** * 拓扑排序法 * 步骤.
2020-11-25 12:50:00
331
转载 javascript 严格模式
ES5 引入严格模式一、严格模式的使用使用 use strict 表明脚本或函数开启严格模式use strict 声明必须放在第一行,否则将导致严格模式声明无效(严格来说,是必须放在具有实际运行作用的第一行代码前,例如可以放在一个空分号后边)脚本中<!-- 严格模式声明只在当前script内有效 --><script> 'use strict'; console.log('严格模式')</script><script> c.
2020-11-24 17:50:46
156
转载 javascript with语句
不要用withwith语句with 的初衷为了避免冗余的对象调用foo.bar.data.x = 1;foo.bar.data.y = 2;foo.bar.data.z = 3;with (foo.bar.data){ // 改变块内作用域 x = 1; y = 2; z = 3;}但其实用变量替换的方法也可以轻松解决var o = foo.bar.data;o.x = 1;o.y = 2;o.z = 3;所以with似乎本来就没有存在的必要。到了如今,会去用wit.
2020-11-24 16:18:19
233
原创 完全二叉树的节点个数
leetcode 222 题 [medium]中:完全二叉树的节点个数英:Count Complete Tree Nodes题解一:使用DFS或BFS可以之间简单的解决这道题实现:DFS + 优化(提前结束递归)/** * Definition for a binary tree node. * function TreeNode(val) { * this.val = val; * this.left = this.right = null; * } .
2020-11-24 12:11:45
362
原创 vue key属性详解
key的作用?key使用id与index的区别?一、key的作用作为一个DOM节点的标识值,结合Diff算法可以实现对节点的复用。(key相同的节点会被复用)只有当key(或节点类型)发生改变时,才会触发节点的重新渲染。否则Vue将会复用之前的节点,通过改变节点的属性来实现节点的更新。二、key使用id与index的区别不推荐使用index作为key,因为这种做法会导致某些节点被错误地原地复用,具体如下性能损耗:列表渲染时会导致变动项往后的所有列表节点(内容)的更新(相当..
2020-11-22 20:47:10
1283
原创 html meta标签
<meta />标签位于文档头部(head标签内),可用于定义文档内的元数据(采用键值对的格式)一、通用属性content: 元数据的值name: 元数据的键常见的name值name描述Author标注网页的作者Keywords文档的关键词,供搜索引擎用的Description页面的描述,供搜索显示页面搜索结果时对页面进行简短描述(该meta必须放到Keywords的meta后)Robots告诉搜索机器人哪些页面需要索引,哪些页面不需要.
2020-11-22 12:34:54
157
1
原创 javascript 获取字符串每个字符的字节数
String.prototype.charCodeAt(idx) 获取某个字符的编码值(转为10进制)实现function func(_str){ let result = []; for(let i=0, len=_str.length; i<len; i++){ result.push(Math.ceil( Math.log2(_str.charCodeAt(i)) / 8) ) } return result;}...
2020-11-22 10:16:32
468
原创 算法 实现一个LRU(O(1)的时间复杂度进行set, get)
LRU:Least Recently Used的缩写,即最近最久未使用,是一种常用的页面置换算法,选择最近最久未使用的页面予以淘汰。一、LRU示例// 假设现在有一个LRU缓存,最大空间为3LRUcache = []// cache 未满LRUcache.set(1,1) // [{1: 1}]LRUcache.set(2,2) // [{1: 1}, {2: 2}]LRUcache.set(3,3) // [{1: 1}, {2: 2}, {3: 3}]// cache 满,最近最久未.
2020-11-21 11:53:56
462
原创 javascript prototype vs. __proto__
一、prototypeprototype 是函数特有的原型对象,原型上的方法和属性会被函数的实例共享(这个时候这个函数应该称为类比较合适了)prototype 都有一个 constructor 属性,指向类的自身function Animal(){}Animal.prototype.say = function(){ console.log("hello world")}let cat = new Animal();// 1. cat.say(); // hello world/
2020-11-20 12:43:23
152
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人