再学javascript算法之美
不做切图仔,不做页面仔,从学会算法的基础使用开始
风清云淡_A
知识在于积累,成功在于坚持
展开
-
javascript中的算法动态规划之找零问题
贪心算法遵循一种近似解决问题的技术,通过每个阶段的局部最优选择(当前最好的解),从而达到全局的最优(全局最优解)。这样,我们就实现了贪心算法版的最小硬币找零问题,代码比动画的递归简单了很多。原创 2024-07-31 14:25:43 · 286 阅读 · 0 评论 -
算法的时间复杂度与空间复杂度
算法执行时占用的内存空间,空间复杂度,用大 O 表示法,O(1),O(n)空间复杂度主要关注变量,比如数组,对象,函数,字符串等占用内存的大小。随着 n 的增大,时间复杂度会增大平方。随着 n 的增大,时间复杂度会增大立方。随着 n 的增大,时间复杂度会增大对数。不变的量,比如常数,时间复杂度为 1。随着 n 的增大,时间复杂度会增大。后进先出,在栈顶端进行数据的操作。后进先出,在栈顶端进行数据的操作。最后调用的函数,是最先执行完的。原创 2024-07-27 22:57:15 · 371 阅读 · 0 评论 -
原生js 实现 鼠标移动跟随的案例
原生js实现的鼠标滑过图标效果,实现起来比较简单,重点就是计算角度弧度来求出left,top的值,看效果。原创 2022-11-26 23:43:11 · 459 阅读 · 0 评论 -
js数组里面的重复对象的去重,合并不同的属性的处理方法
重复数组的过滤去重,并且合并不同的属性,比较抽象!具体的看下面的数据格式var arr = [ { data: [ { xh: '1', name: '张三', value: '1360', postion: [{ d: '上海' }] }, { xh: '2', name: '李四', value: '1120', postion: [{ d: '广州' }] } ] },原创 2021-07-22 16:33:08 · 484 阅读 · 0 评论 -
【算法练级js+java】重复给定字符n次
复制指定的字符串n次原创 2024-05-07 10:22:00 · 304 阅读 · 0 评论 -
js算法的深度优先遍历和广度优先遍历
深度优先遍历实现方式1//深度优先遍历方法let tree = { id: '1', title: '节点1', children: [ { id: '1-1', title: '节点1-1' }, { id: '1-2', title: '节点1-2', children: [{ id: '2', title: '节点2'原创 2022-04-13 15:44:22 · 4954 阅读 · 1 评论 -
JS数据结构与算法之链表
JS数据结构与算法之链表这是算法系列文章第一篇,参考的是<<javascript数据结构与算法>>1.链表的概念, 可以去百度查阅2.链表的实现以下是基本的数据结构 function LinkList(){ var Node = function(element){ this.element = element this.next = null }}链表末原创 2021-05-26 12:45:57 · 112 阅读 · 0 评论 -
JS 中合并数组中的多个对象为一个的方法
var arrObj = [{a:1, b:2},{c:3, d:4},{e:5, f:6}];//mergedObj = {a:1, b:2, c:3, d:4, e:5, f:6}//es6的解决方式const arrObj = [{a: 1, b: 2}, {c: 3, d: 4}, {e: 5, f: 6}];console.log(arrObj.reduce(function(result, current) { return Object.assign(result, cu.原创 2020-06-15 13:11:09 · 1666 阅读 · 0 评论 -
js算法-两种将数组数据转为树结构记录
let arr = [ { id: 2, name: "部门B", parentId: 0 }, { id: 3, name: "部门C", parentId: 1 }, { id: 1, name: "部门A", parentId: 2 }, { id: 4, name: "部门D", parentId: 1 }, { id: 5, name: "部门E", parentId: 2 }, { id: 6, n.原创 2021-03-23 22:59:33 · 352 阅读 · 0 评论 -
原生js实现元素的圆周运动
我们想实现的需求是,div的圆周运动, //角度就是两边的夹角//1弧度所对应的概念圆的周长//Π⚪的弧度是2Π===360°//1°=Π/1801弧度=180°/ΠHTML代码 <div id="div1"></div>JS代码 window.onload = function () { var oDiv = document.getEle...原创 2021-05-04 15:52:31 · 442 阅读 · 0 评论 -
原生js 实现mac上的鼠标滑过图标的效果方法
原生js实现的鼠标滑过图标效果,实现起来比较简单,重点就是计算放大缩小的比例,看效果。原创 2022-11-26 12:44:29 · 357 阅读 · 0 评论 -
【算法练级js+java】旋转字符串判断是否相等
每一天一道算法题训练,努力打开编程思维,才能进大厂光明正大的泡心仪的小姐姐!!(手动捂脸)原创 2024-05-09 16:59:55 · 465 阅读 · 0 评论 -
js中的一个一维数据转二位数据显示效果
1.动态创建一系列的div,然后显示在body中,这个效果比较简单,如下展示 var oDiv = document.getElementsByTagName("div"); for (var i = 0; i < 100; i++) { document.body.innerHTML += "<div>" + i + "</div>"; } console.log(oDiv);原创 2021-05-03 22:54:58 · 121 阅读 · 0 评论 -
算法系列1--js转置矩阵
给定一个矩阵A,返回A的转置矩阵。矩阵的转置是指将矩阵的主对角线翻转,交换矩阵的行索引与列索引。输入:[[1,2,3],[4,5,6],[7,8,9]]输出:[[1,4,7],[2,5,8],[3,6,9]]输入:[[1,2,3],[4,5,6]]输出:[[1,4],[2,5],[3,6]]见图思路分析:此处省略1000字,重点MARK:1.输出的数组长度是...原创 2019-07-10 17:35:35 · 351 阅读 · 0 评论 -
js基本算法总结(一)
//判断一个单词是否是回文//需求就是正反都是一样的function checkPalindrom(str){ return str === str.split('').reverse().join('')}console.log(checkPalindrom('manam'))//数组的去重// [1,13,24,11,11,14,1,2]// 需求是得到[1...原创 2019-06-24 20:31:35 · 481 阅读 · 0 评论 -
算法系列1
给定一个整数数组 nums和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。分析:思路很多,基本是遍历这个数组,进行逐个相加找出那个元素,返回下标var twoSum = function(nums, target) { var len = nu...原创 2019-07-10 13:05:39 · 110 阅读 · 0 评论 -
算法系列1--js数组排序
两个数组合并成一个数组请把两个数组 ['A1', 'A2', 'B1', 'B2', 'C1', 'C2', 'D1', 'D2'] 和 ['A', 'B', 'C', 'D'],合并为 ['A1', 'A2', 'A', 'B1', 'B2', 'B', 'C1', 'C2', 'C', 'D1', 'D2', 'D']。自己研究的解法:var a = ['A1', 'A2'...原创 2019-07-11 13:18:14 · 426 阅读 · 1 评论 -
算法系列4--js选择排序
选择排序也是分内外两层,跟冒泡排序比,选择排序是不稳定的。需要借助交换函数 function swap(i, j, array) { var temp = array[j]; array[j] = array[i]; array[i] = temp; }取外层的每一轮的i为基准值,与内层的j进行比较,如果j项比min项小...原创 2019-07-29 15:49:56 · 103 阅读 · 0 评论 -
js基本算法总结(二)
算法--最少硬币找零//最少硬币找零 function MinCoinChange(coins){ var coins = coins var cache = {}; this.makeChange = function (amount) { var self = this...原创 2019-06-24 20:34:33 · 180 阅读 · 0 评论 -
算法系列3--js冒泡排序
//i是外层的游标,j是内层的元素 function swap(i, j, array) { var temp = array[i]; //临时存储位置的值 array[i] = array[j]; //把j位置的值交给位置 array[j] = temp; //临时存储的值交给j位置 }/* function...原创 2019-07-29 14:50:52 · 115 阅读 · 0 评论 -
(四)前端javascript中的数据结构之归并排序
因为是分治思想,所以要用到递归。原创 2024-07-09 14:29:18 · 396 阅读 · 0 评论 -
前端javascript中的排序算法之插入排序
【代码】前端javascript中的排序算法之插入排序。原创 2024-07-09 10:38:13 · 215 阅读 · 0 评论 -
前端javascript中的排序算法之冒泡排序
【代码】前端javascript中的排序算法之冒泡排序。原创 2024-07-09 09:50:28 · 333 阅读 · 0 评论 -
前端javascript中的排序算法之选择排序
选择排序(Selection Sort)基本思想:是一种原址排序法;将数组分为两个区间:左侧为已排序区间,右侧为未排序区间。每趟从未排序区间中选择一个值最小的元素,放到已排序区间的末尾,从而将该元素划分到已排序区间。代码实现function selectSort(arr) { const len = arr.length; let indexMin = 0; //迭代到最后一项时,前面已经排好序,无需再循环 for (let i = 0; i < len - 1; i++原创 2024-07-09 09:40:15 · 210 阅读 · 0 评论 -
leecode算法--每日一题1
right + left有可能超出js中的数值最大值。这样写就可以保证查询的数据任意大。所以排序操作之前必须借助排序算法进行排序。注意注释(1)那里是不严谨的写法。原创 2023-07-31 17:20:12 · 269 阅读 · 0 评论