js算法(JS算法求数组最大值)
本篇文章给大家谈谈js算法,以及JS算法求数组最大值对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
【JS算法】贪心算法
贪心算法是指,在对问题求解时,总是做出在当前看来是最好誉乎桐的选择
举个简单的贪心算法: 柠檬水找零
在柠檬水摊上,每一杯柠檬水的售价为 5 美元。每位顾客只买一杯柠檬水,然后向你付
5 美元或10 美元或 20 美元。
你必须给每个顾客正确找零,注意,一开始你手顷樱头没有任何零钱。如果庆坦你能给每位顾客正确找零,返回 true ,否则返回 false
js实现递归算法
!DOCTYPE
html
head
meta content="" charset="utf-8"
title函李迹蚂数的递归调用/title
/head
body
script
//递归的概念:自己调用自己
//注意:使用递归的时候必须有一个结束标志,否则会报内存溢州镇出的错误 Maximum call stack size exceeded;
/* 1.案例一:求1,2,3...n 的和 */
function fn(n){
if(n===1){
return 1;
}
return n+fn(n-1);
}
//console.log(fn(3));
/* 2.案例二:求1,2,3...到n的阶乘 */
function getFactorial(n){
if(n===1){
return 1;
}
return n * getFactorial(n-1);
}
/哪埋/console.log(getFactorial(3));
/* 案例三:斐波那契数列 *///第n个数等于前两个数的和,除第一个数跟第二个树外:如1,1,2,3,5,8,11,19,30...
function getNFibonacciSequence(n){
if(n===1 || n===2){
return 1;
}
return getNFibonacciSequence(n-1)+getNFibonacciSequence(n-2);
}
console.log(getNFibonacciSequence(4));
/script
/body
/html
JS算法专题 - 树的层序遍历
先看看leetcode上的几道题目,关键字 层序遍历 ,其实就是把一棵树一层一层地遍历,取出每一个节点。当然从根节点到叶子节点,从叶子节点到根节点,每层从左到右,从右到左……都可以衍生成不同的题目。
102. 二叉树的层序遍历
107. 二叉树的层序遍历 II
429. N 叉树的层序遍历
这一类的题目,被归纳在leetcode的 广度优先搜索 标签下
这一类的题目,总结起来可以套用模板来解决,我们需要借用一下数据结构的知识:
队列 :先进先出,后进后出
在JavaScript中,我们会使用 数组Array 来模拟队列:
先初始化一个 二叉树
先看看102的题目
解题:
从以上例子,只要步骤是:
有一个细节要注意:
这里用的是 pop() 和 unshift() ,是因为队列先进先出的特点,pop()从最后面弹出一个元素,unshift()把新元素放到最前面。 push() 和 shift() 搭配也有相同效果。
107的题目稍微改变了一下,要求输出是[[15,7], [9,20], [3]],可以看出,就是把102的从上到下输出每一层节点,改成从下到上输出,首先想到的就是把102的数组反转就可以了。
但是,我们可能直接在保存结果数组的时候处理一下:
102中,我们使用 push() 把每一层的节点放入结果数组
107中,结果数组和102的反转了,所以,我们可以把 push() 改成 unshift() 即可,最后得到的结果就是,树的要节点那盯源衡层在结果数组的最后,叶子节点在最前面。
429题中把二叉树改成了N叉树,树的结构发生了变化
但是可以看到,和二叉树的数据结构相比,就是把left和right合成children,那么在我们的模板中,也只需要修改一下
改成
这样就可以得到结果了。
想一下,如果再改一下:如何从右到左遍历每一层节点凯做?层数是单数时从左到右,层数是双数时从右到左?
再扩展一下,这个算法能做什裂做么呢?
当我们玩游戏,特别是走迷宫之类的游戏,是不是会从一个点出发,然后判断下一步能不能走,直到找出终点?BFS也是寻路方案的基础。
推荐一下leetcode上的总结:
二叉树层序遍历登场:我要打十个!
[img]关于js算法和JS算法求数组最大值的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。