JavaScript-Algorithms
JavaScript-Algorithms copied to clipboard
基础理论+JS框架应用+实践,从0到1构建整个前端算法体系
给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。 **注意:** 你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。 **示例 1:** ```js 输入: [7,1,5,3,6,4] 输出: 7 解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4...
在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序。 **示例 1:** ```js 输入: 4->2->1->3 输出: 1->2->3->4 ``` **示例 2:** ```js 输入: -1->5->3->4->0 输出: -1->0->3->4->5 ``` 附赠可测试leetcode链接:[leetcode](https://leetcode-cn.com/problems/sort-list/solution/jsjie-pai-xu-lian-biao-wen-ti-by-user7746o/)
编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 `""`。 **示例 1:** ```js 输入: ["flower","flow","flight"] 输出: "fl" ``` **示例 2:** ```js 输入: ["dog","racecar","car"] 输出: "" 解释: 输入不存在公共前缀。 ``` 附leetcode:[leetcode](https://leetcode-cn.com/problems/longest-common-prefix/solution/tu-jie-leetcodezui-chang-gong-gong-qian-zhui-lcp-b/) **场景案例【网易】:** 有一个场景,在一个输入框输入内容,怎么更加高效的去提示用户你输入的信息,举个例子,你输入天猫,那么对应的提示信息是天猫商城,天猫集团,这个信息如何最快的获取,有没有不需要发请求的方式来实现? 提示: - 数据请求:防抖、节流 - 数据存储处理:Trie树
给定一个字符串,你的任务是计算这个字符串中有多少个回文子串。 具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串。 **示例 1:** ``` 输入:"abc" 输出:3 解释:三个回文子串: "a", "b", "c" ``` **示例 2:** ``` 输入:"aaa" 输出:6 解释:6个回文子串: "a", "a", "a", "aa", "aa", "aaa" ``` **提示:** - 输入的字符串长度不会超过 1000 。...
在未排序的数组中找到第 **k** 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。 **示例 1:** ```js 输入: [3,2,1,5,6,4] 和 k = 2 输出: 5 ``` **示例 2:** ```js 输入: [3,2,3,1,2,4,5,5,6] 和 k = 4 输出: 4...
给定一个带有头结点 `head` 的非空单链表,返回链表的中间结点。 如果有两个中间结点,则返回第二个中间结点。 **示例 1:** ```js 输入:[1,2,3,4,5] 输出:此列表中的结点 3 (序列化形式:[3,4,5]) 返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。 注意,我们返回了一个 ListNode 类型的对象 ans,这样: ans.val = 3, ans.next.val = 4, ans.next.next.val = 5, 以及...
给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 **说明:** 叶子节点是指没有子节点的节点。 **示例:** 给定二叉树 `[3,9,20,null,null,15,7]` , 3 / \ 9 20 / \ 15 7 返回它的最大深度 3 附赠leetcode地址:[leetcode](https://leetcode-cn.com/problems/maximum-depth-of-binary-tree/solution/leetcode104er-cha-shu-de-zui-da-shen-du-by-user774/)
给定一个二叉树,返回它的 **前序** 遍历。 **示例:** ```js 输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,2,3] ``` **进阶:** 递归算法很简单,你可以通过迭代算法完成吗? 附赠leetcode地址:[leetcode](https://leetcode-cn.com/problems/binary-tree-preorder-traversal/solution/javascriptjie-qian-xu-bian-li-er-cha-shu-by-user77/)
做了一道题,回答了一下输出的内容 ```js function Foo() { getName = function(){ alert(1); }; return this; } Foo.getName = function() { alert(2); }; Foo.prototype.getName = function(){ alert(3); }; var getName = function() { alert(4);...
### Function.prototype.call() `call()` 方法调用一个函数, 其具有一个指定的 `this` 值和多个参数(**参数的列表**)。 ```js func.call(thisArg, arg1, arg2, ...) ``` 它运行 `func`,提供的第一个参数 `thisArg` 作为 `this`,后面的作为参数。 看一个简单的例子: ```js function sayWord() { var talk = [this.name, 'say', this.word].join(' ');...