![](https://img-blog.csdnimg.cn/8d6bd8a49936469490813a940ad97324.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
算法
与算法或者复杂代码解析相关的文章
小草莓蹦蹦跳
一枚努力奋斗的程序莓,喜欢记录和学习。本博客主要涵盖前端技术积累和工作积累。just do it,家人们加油加油油
展开
-
字符串转换为字节数组、16进制转换为base64、base64转换为字符串数组、base64转换为16进制(微信小程序)
【代码】字符串转换为字节数组、16进制转换为base64、base64转换为字符串数组、base64转换为16进制(微信小程序)原创 2024-05-30 17:42:33 · 361 阅读 · 0 评论 -
判断一个数是否是素数?并使用proxy检测该函数的性能
质数(prime number)又称素数,有无限个。一个大于1的自然数,除了1和它本身外,不能被其他自然数整除换句话说,就是这个数除了 1 和它本身以外不再有其他的因数;否则称为合数。原创 2024-01-03 22:21:41 · 535 阅读 · 0 评论 -
算法 - 无重复字符的最长子串(03)
定义左右两个指针,保证两个指针对应的子串中没有重复的字符,寻找并记录最长的子串长度。如果窗口满足条件,右指针向右滑动扩大窗口,更新最优值;在移动结束后,这个子串就对应着以左指针开始的,不包含重复字符的最长子串,我们记录下这个子串的长度。在枚举结束后,我们找到的最长的子串的长度即为答案。(即 C++ 中的 std::unordered_set,Java 中的 HashSet,Python 中的 set,将左指针向右移动一格,表示我们开始枚举下一个字符作为起始位置,然后我们可以不断地向右移动右指针,原创 2023-12-15 10:04:28 · 365 阅读 · 0 评论 -
算法 - 二分搜索法 / 二分法(704)
要在二分查找的过程中,保持不变量,就是在 while 寻找中每一次边界的处理都要坚持根据区间的定义来操作,这就是。原创 2023-12-12 21:15:28 · 372 阅读 · 0 评论 -
Object.prototype.toString.call()方法、为 Array 添加一个去除重复项的方法
注意:Object.prototype.toString() 本身是允许被修改的,而我们目前所讨论的关于Object.prototype.toString()这个方法的应用都是假设 toString() 方法未被修改为前提的。这里要注意,NaN === NaN 为 false,{} === {}为false。因此,要想区分对象、数组、函数、单纯使用 。判断数据类型,只能区分除了 null 以外的。在JS中,可以通过 。都会统一返回 。来说,使用 。原创 2018-10-15 16:19:08 · 1461 阅读 · 1 评论 -
程序题:从对象中排除指定的属性并返回新对象
【代码】程序题:从对象中排除指定的属性并返回新对象。原创 2023-10-13 14:02:17 · 106 阅读 · 0 评论 -
程序题:从对象中挑选指定的属性并返回新对象
【代码】程序题:从对象中挑选指定的属性并返回新对象。原创 2023-10-13 13:59:02 · 32 阅读 · 0 评论 -
时间复杂度、空间复杂度
【时间空间复杂度】 = 【时间和空间增长的趋势】原创 2023-09-24 18:42:26 · 311 阅读 · 0 评论 -
算法——用递归算法实现,数组长度为5且元素的随机数在2-32间不重复的值
描述:这是一道大题目,把考点拆成了4个小项;需要侯选人用递归算法实现(限制15行代码以内实现;限制时间10分钟内完成): a) 生成一个长度为5的空数组arr。 b) 生成一个(2-32)之间的随机整数rand。 c) 把随机数rand插入到数组arr内,如果数组arr内已存在与rand相同的数字,则重新生成随机数rand并插入到arr内[需要使用递归实现,不能使用for/while等循环] d) 最终输出一个长度为5,且内容不重复的数组arr。 /* * 初始化 a原创 2020-07-20 14:47:02 · 644 阅读 · 0 评论 -
封装一个方法:判断一个变量未定义和已定义
return val!== null;原创 2023-07-24 18:46:35 · 218 阅读 · 0 评论 -
写一个获取数组的最大值、最小值的方法
写一个获取数组的最大值、最小值的方法 // 第一种写法 sort var arr = [5, 4, 6, 7, 8, 2, 3, 5, 12, 3] function sortNum(a, b) { return b - a } arr.sort(sortNum) console.log(arr) // [12, 8, 7, 6, 5, 5, 4, 3, 3, 2] // 再去获取第一和最后一个元素的值.原创 2020-07-22 23:24:58 · 596 阅读 · 0 评论 -
封装一个方法:通过对象的原型方法判断数据类型
【代码】封装一个通过对象的原型方法判断数据类型的方法。原创 2023-07-24 18:00:07 · 57 阅读 · 0 评论 -
instanceof 运算符的作用和核心原理、 手写实现 instanceof
【代码】instanceof 的核心原理、 手写实现 instanceof。原创 2023-07-24 17:32:56 · 530 阅读 · 0 评论 -
算法题 _ 判断字符串是否有效
【代码】算法题 _ 判断字符串是否有效。原创 2023-07-08 13:37:40 · 271 阅读 · 0 评论 -
手机号码中间隐藏四位
【代码】手机号码中间隐藏四位。原创 2018-10-26 21:33:43 · 5696 阅读 · 0 评论 -
对敏感信息脱敏,如对姓名、证件号码、手机号码、银行卡号码进行脱敏
显示姓名中的第一个和最后一个字,如为英文等其他语种,也是显示第一个和最后一个字母。显示姓名中的第一个字,如为英文等其他语种,也是显示第一个字母。张* 王** A*****三 王*蛋 A****e。显示前1/3和后1/3段,其他用*号代替。显示前2位和后2位,其它用*号代替。显示前3位+ *(实际位数)+后4位。显示姓名中的第一个和最后一个字,显示前3位+****+后4位。显示姓名中的第一个字,原创 2023-05-25 16:04:20 · 6962 阅读 · 0 评论 -
写一个获取数组的最大值、最小值的方法
然后再获取数组的第一个元素和最后一个元素,即得到最大值和最小值。用原地算法对数组的元素进行排序,并返回数组。原创 2020-07-22 23:25:11 · 641 阅读 · 0 评论 -
数组排序 sort() 方法 (映射对含有大小写的字符串进行排序)
方法会直接修改原始数组,并返回排序后的数组。sort() 方法比较两个值时,将值发送给比较函数,根据返回的(负、零、正)值对值进行排序。sort() 方法比较两个值时,将值发送给比较函数,根据返回的(负、零、正)值对值进行排序。如果 a-b 小于 0 ,那么 a 会被排列到 b 之前。如果 a-b 小于 0 ,那么 a 会被排列到 b 之前。如果 a-b 等于 0 , a 和 b 的相对位置不变。如果 a-b 大于 0 , b 会被排列到 a 之前。如果 a-b 大于 0 , b 会被排列到 a 之前。原创 2023-05-05 16:33:14 · 4474 阅读 · 0 评论 -
如何改变this指向?this指向总结
1、箭头函数中的 this 是在声明中就定义好了的,而普通函数中的 this 则是在调用时定义好的。2、基本上可以归为五类:① 全局this指向是window ② 普通函数this的指向是调用者③ 构造函数的this是new之后的新对象 ④ 箭头函数this的指向的是其父级指向⑤ call、 apply、bind的this指向的是第一个参数JavaScript 中的this用一句话来概括,就是在执行时确定的。原创 2023-05-04 10:13:41 · 1369 阅读 · 0 评论 -
普通函数和箭头函数this 指向的区别?如何改变this指向?
一、普通函数的this指向1、声明式 --- 指向的是window四、总结1、箭头函数中的 this 是在声明中就定义好了的,而普通函数中的 this 则是在调用时定义好的。2、基本上可以归为五类:① 全局this指向是window② 普通函数this的指向是调用者③ 构造函数的this是new之后的新对象④ 箭头函数this的指向的是其父级指向⑤ call、apply、bind的this指向的是第一个参数JavaScript 中的this用一句话来概括,就是在执行时确定的原创 2020-07-23 11:03:23 · 3434 阅读 · 0 评论 -
写一个让一个数组乱序的方法
【代码】写一个让一个数组乱序的方法。原创 2020-07-21 12:23:54 · 57 阅读 · 1 评论 -
js 单线程、宏任务与微任务的区别以及执行顺序是什么
宏任务:指消息队列中的等待被主线程执行的事件宏任务执行时都会重新创建栈,然后调用宏任务中的函数,栈也会随着变化。但宏任务执行结束时,栈也会随之销毁。微任务:可以看成是一个需要异步执行的函数微任务是基于消息队列、事件循环、UI 主线程还有堆栈而来的微任务的执行时机:在主函数执行结束之后、当前宏任务结束之前。原创 2020-07-22 17:35:42 · 2831 阅读 · 3 评论 -
写一个判断设备来源的方法
【代码】写一个判断设备来源的方法。原创 2023-04-28 14:04:01 · 52 阅读 · 0 评论 -
什么是事件冒泡和事件委托?如何实现事件委托?
一、事件冒泡1、什么是事件冒泡2、阻止事件冒泡的方式3、事件冒泡的优点二、事件委托/事件代理1、什么是事件委托2、为什么要用事件委托?3、事件委托的原理4、事件委托怎么实现5、事件源6、 实现不同的点击效果7、 新增的节点如何实现事件委托?8、什么样的事件可以用事件委托,什么样的事件不可以用?9、事件委托的优缺点 事件委托是利用事件的冒泡原理来实现的。事件冒泡就是事件从最深的节点开始,然后逐步向上传播事件。如果要用事件委托,就会将所有的操作放到 js原创 2019-03-20 10:12:28 · 2863 阅读 · 1 评论 -
写一个方法去掉字符串中的空格,要求传入不同的类型分别能去掉前、后、前后、中间的空格
凡是属性名属于 Symbol 类型,就都是独一无二的,可以保证不会与其他属性名产生冲突。Object.freeze() 方法可以冻结一个对象,一个被冻结的对象再也不能被修改。\w 匹配包含下划线的所有字母和数字,与 [a-zA-Z0-9_] 等价。ES5中包含5种原始类型:字符串、数字、布尔值、null和undefined。\s 匹配任何空白字符,包括空格、制表符、换页符等。最后一个 /g 是全局匹配模式(匹配在整个字符串都有效)所有字母和数字中间的任何空白字符。原创 2020-07-20 15:31:02 · 205 阅读 · 1 评论 -
bind、call、apply的区别、实现逻辑?手写实现 bind、call、apply方法
函数内部使用 apply 来绑定函数调用,需要判断函数作为构造函数的情况,这个时候需要传入当前函数的 this 给 apply 调用,其余情况都传入指定的上下文对象。call 和 apply 会立即执行函数,而 bind 不会执行函数,而是返回一个改变了 this 指向的新的函数。本质都是为了改变函数运行时的执行上下文,使得函数在执行过程中的 this 值得到绑定并且传入指定的参数。而 apply 是传入一个数组。将待执行的函数作为上下文对象的属性,巧妙的改变了 this 的指向,并且立即指向该函数。原创 2020-07-21 11:35:26 · 340 阅读 · 1 评论 -
[].forEach.call($$(“*“),function(a){ a.style.outline=“1px solid #“+(~~(Math.random()*(1<<24))).toStr
解释下这段代码的意思![].forEach.call($$("*"), function(a) { a.style.outline="1px solid #"+(~~(Math.random()*(1<<24))).toString(16) })从一行代码里面学点JavaScript - L3ve的绝对领域 - OSCHINA - 中文开源技术交流社区在你的Chrome浏览器的控制台中输入这段代码,你会发现不同HTML层都被使用不同的颜色添加了一个高亮的边框。原创 2020-07-21 11:25:11 · 62 阅读 · 1 评论 -
用递归算法实现,数组长度为5且元素的随机数在2-32间不重复的值
【代码】用递归算法实现,数组长度为5且元素的随机数在2-32间不重复的值。原创 2023-04-26 11:14:26 · 47 阅读 · 0 评论 -
写一个数组去重的方法(支持多维数组)
利用ES6的语法:数组去重[...new set(array)]实现。循环回调将数组降级,然后再去重。原创 2019-11-05 12:11:33 · 34 阅读 · 1 评论 -
知识总结:说说你对冒泡排序和快速排序的理解
一、冒泡排序思路1:a) 比较两个相邻的元素,如果后一个比前一个大,则交换位置 b) 第一轮的时候最后一个元素应该是最大的一个 c) 按照第一步的方法进行两个相邻的元素的比较,由于最后一个元素已经是最大的了,所以最后一个元素不用比较 // 冒泡排序1 function sortArr1(arr) { for (let i = 0; i < arr.length; i++) { ...原创 2020-06-27 00:48:30 · 783 阅读 · 0 评论 -
add(2)(3)(4) 输出9
想想也不奇怪,你每次函数调用后返回的一个函数对象,那么console.log输出就是一个函数对象的字符串表示了。可以发现返回的每一个函数执行的逻辑都是一样的,就此我们可以精简下代码。在函数中添加判断,当没有输入参数时,直接返回调用的结果而不是返回函数。但是,并没有输出我们预料的结果14,而是一个函数的字符串表示。方法,如果有并且返回值是一个原始值,那么直接返回这个值。否则没有valueOf或返回的不是原始值,那么调用。当一个对象转换成原始值时,先查看对象是否有。让函数返回后返回自身。方法,返回字符串表示。原创 2019-03-18 14:20:20 · 3644 阅读 · 1 评论