js算法
前端常见算法
KeivnLai
专注与H5大前端开发。
展开
-
【js算法】贪心算法----跳跃游戏(一看就懂)
【思想 】在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的是在某种意义上的局部最优解最优解【题目】给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。【思路】例如这样一个数组,我们需要判断的是,它的位置+它位置所对应的值是否等于数组的长度而已[2,3,1,1,4][3,2,1,0,4]var canJump = function(nums) { let k原创 2021-06-30 11:26:53 · 934 阅读 · 0 评论 -
【js算法】贪心----剪绳子(一看就懂)
【贪心算法的思想】在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的是在某种意义上的局部最优解最优解。【题目】给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]…k[m] 。请问 k[0]k[1]…*k[m] 可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。【思路】利用均值不等式求得 将绳子分成原创 2021-06-30 09:05:45 · 753 阅读 · 0 评论 -
【js算法】动态归回dp----不同路径(详细解答,一看就懂)
【问题】一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径【思路】最后的终点有两条路径 从上边一格进入或者从左边 一格进入;给每一个格子一格值,表示走入这个格子的走法,那么, 最后一个格子的走法 = 上边一个格子的走法 + 左边一格格子的走法找到动态规划的公式之后【代码】/** * @param {number} m * @p原创 2021-06-28 13:42:29 · 462 阅读 · 0 评论 -
动态规划DP--爬楼梯问题
【问题】假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?【要求】示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。4. 1 阶 + 1 阶 + 1 阶5. 1 阶 + 2 阶6. 2 阶 + 1 阶【解题思路】要爬到楼梯的最上层,最后一步有两种走法,一种是一步一个阶梯,还有一种是原创 2021-06-16 17:00:36 · 890 阅读 · 1 评论 -
JS将手机号中间四位变为****的四种方式
【需求】小程序,H5, PC的用户信息展示时需要对用户的电话号码进行加密处理,其中常见的做法是将中间四位数字变成 **** ,下边有四种办法1. 正则表达式 【推荐】let tel = '18000010001'tel.replace(/(\d{3})\d{4}(\d{4})/, "$1****$2")console.log(tel)2. 利用数组splice,split,join方法let tel = '18000010001';let tempArray = tel.split("")原创 2021-06-09 18:11:42 · 4216 阅读 · 0 评论