
算法图解系列
记录常见的算法题的解题思路与教程,提升自身的逻辑与思维能力
麦田上的字节
一个文绉绉的前端程序员
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
JavaScript 如何求两个数的最小公倍数
1 .用辗转相除法求最大公约数算法描述:m对n求余传给自己,再次求余, 若余数等于0则 n 为最大公约数2.最小公倍数 = 两个数的积 / 最大公约数基本思想是采用将两个数相乘,然后除以它们的最大公约数function getMinCommonMultiple(a, b){ return a * b / getMaxCommonDivisor(a, b);}在我国古代的《九章算术》中就有记载,现摘录如下:约分术曰:“可半者半之,不可半者,副置分母、子之数,以少减多,更..原创 2020-12-24 17:56:40 · 2766 阅读 · 3 评论 -
【算法图解|5】javaScript求两个数的最大公约数
思路:采用辗转相除的方法,用大的数去除以小的那个数,然后再用小的数去除以的得到的余数,一直这样递归下去, 直到余数为0时,最后的被除数就是两个数的最大公约数。function getMaxCommonDivisor(a, b) { if (b === 0) return a; return getMaxCommonDivisor(b, a % b);}...原创 2020-12-24 17:53:33 · 1724 阅读 · 1 评论 -
【算法图解|4】JavaScript 如何求数组的最大值和最小值
取出数组中的最大值或者最小值是开发中常见的需求最原始的方法,莫过于循环遍历一遍:var arr = [6, 4, 1, 8, 2, 11, 23];var result = arr[0];for (var i = 1; i < arr.length; i++) { result = Math.max(result, arr[i]);}console.log(result);通过遍历数组求出一个最终值,我们就可以使用 reduce 方法:var arr = [.原创 2020-12-24 17:51:09 · 1734 阅读 · 1 评论 -
【算法图解|3】JavaScript 如何实现数组去重
数组去重方法老生常谈,既然是常谈,我也来谈谈。也许我们首先想到的是使用 indexOf 来循环判断一遍,但在这个方法之前,让我们先看看最原始的方法:var array = [1, 1, '1', '1'];function unique(array) { // res用来存储结果 var res = []; for (var i = 0, arrayLen = array.length; i < arrayLen; i++) { for (va.原创 2020-12-24 17:45:37 · 1398 阅读 · 1 评论 -
【算法图解|2】JavaScript 如何实现数组扁平化
数组的扁平化,就是将一个嵌套多层的数组 array (嵌套可以是任何层数)转换为只有一层的数组。举个例子,假设有个名为 flatten 的函数可以做到数组扁平化,var arr = [1, [2, [3, 4]]];console.log(flatten(arr)) // [1, 2, 3, 4]我们最一开始能想到的莫过于循环数组元素,如果还是一个数组,就递归调用该方法:// 这一种方法通过递归来实现,当元素为数组时递归调用,兼容性好function flattenArray(..原创 2020-12-24 17:38:48 · 1416 阅读 · 2 评论 -
【算法图解|1】js 实现一个函数,完成超过范围的两个大整数相加功能
这个问题中的两个数字,都是超出范围的,所以就不能简单的把两个数字,转为Number类型,进行相加。需要取两个数字的每一位,进行相加,大于10,就进1,把结果保存在一个字符串中。主要思路是通过将数字转换为字符串,然后每个字符串在按位相加。function bigNumberAdd(number1, number2) { let result = "", // 保存最后结果 carry = false; // 保留进位结果 // 将字符串转换为数组 numb..原创 2020-12-24 17:35:19 · 1844 阅读 · 1 评论