随笔分类 - js 算法
摘要:// call Function.prototype.mycall = function(context) { // 1. 将传递给mycall的第一个参数作为函数内部的上下文,如果没有传递参数,则默认为全局对象window。 context = context || window; // 2. 在
阅读全文
摘要:动态规划整体思路是用递归问题求解,然后对递归过程中存在的大量重叠子问题进行优化, 自顶向下的求解的思路为记忆化搜索,自底向上的解决问题的思想就是动态规划,自顶向下的求解通常更好理解,我们理解后在改成自底向上的动态规划求解; 剑指 Offer 10- I. 斐波那契数列写一个函数,输入 n ,求斐波那
阅读全文
摘要:回溯算法主要应用于树形问题,我们先从一个简单的算法入手 17. 电话号码的字母组合给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 示例: 输入:"23" 输出:["ad", "ae", "af", "bd",
阅读全文
摘要:257. 二叉树的所有路径给定一个二叉树,返回所有从根节点到叶子节点的路径。 说明: 叶子节点是指没有子节点的节点。 示例: 输入: 1 / \ 2 3 \ 5 输出: ["1->2->5", "1->3"] 解释: 所有根节点到叶子节点的路径为: 1->2->5, 1->3 解题: 1. root
阅读全文
摘要:144. 二叉树的前序遍历给定一个二叉树,返回它的 前序 遍历。 示例: 输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,2,3] 有两种通用的遍历树的策略: 深度优先搜索(DFS) 在这个策略中,我们采用深度作为优先级,以便从跟开始一直到达某个确定的叶子,然后再返回根到达另一个
阅读全文
摘要:利用队列我们可以解决很多问题,js数组也可以实现队列,队列的思想为先近先出,js可以用 push和 shift() 很容易的实现一个队列 给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。 示例: 二叉树:[3,9,20,null,null,15,7], 3
阅读全文
摘要:1.栈的基础使用,js中数组直接可以作为栈使用,栈遵循先进后出的原则,即js可以使用push()和pop() 比较容易的实现一个栈 20. 有效的括号给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。
阅读全文
摘要:24. 两两交换链表中的节点给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 示例: 给定 1->2->3->4, 你应该返回 2->1->4->3. 解题:我们定义4个指针如上进行节点交换,1.给head添加一个虚拟头节点t
阅读全文
摘要:接下来我们来看链表题 206. 反转链表反转一个单链表。 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 解题:链表题需要我们设立更多的指针来保存我们当前操作的细节;1.我们需要定义3个指针 pre,cur ,next,pre为当前链表的前一个
阅读全文
摘要:我们今天继续研究数组在算法中的应用 167. 两数之和 II - 输入有序数组 给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数。 函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2。 说明: 返回的下标值(index1 和
阅读全文
摘要:前端程序员怎么才能学好算法呢?目前算法优秀的视频集中在c++,java,python,本人通过几个月专心看c++的视频掌握了算法的基本思路,都翻译成前端代码一一写出来,从真题到思维全面提升算法思维面对算法面试,不畏惧 二分查找法O(logn)寻找数组中的最大/最小值O(N)归并排序算法 O(nlog
阅读全文

浙公网安备 33010602011771号