文章分类 - 算法
JS
摘要://1.层序遍历 //2.递归,最左和最右比较 var isSymmetric = function(root) { var cmp = function(p1,p2){ if( !p1 && !p2 ) return true; if( !p1 || !p2 ) return false; if(
阅读全文
摘要:var tree = { val: 'div', ch: [{ val: 'p', ch: [{ val: 'text1' }] }, { val: 'p', ch: [{ val: 'span', ch: [{ val: 'tetx2' }] }] }] } function bfs(tree)
阅读全文
摘要:当我们把基准值设置在左边时,为什么要从右边先开始找? 一个数组为:6 1 2 7 9 3 4 5 10 8 图片摘至啊哈算法: 先从右往左: 前面几轮查找不贴了,到i==j时与基准数进行交换,交换之后保证左边的数都小于基准值右边的数都大于基准值 从左往右: 从有问题开始:i继续前行当i==j时此时值
阅读全文
摘要:核心思路是利用慢指针和快指针来解决问题 举个例子:好比两个小学生在操场跑步,一圈一圈地跑,速度上有差异(一个快一个慢),那么只要他们一直绕圈跑着,跑得快的那个总会跟跑的慢的相遇(也就是套圈了)。 var hasCycle = function(head) { //快指针 慢指针 if(!head||
阅读全文
摘要:给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。” 例如,给定如下二叉搜索树: root = [6,
阅读全文
摘要:如果这个题目没有限制,我们很轻松就能搞定,但是我们题目要求我们不能使用乘除法,for,while,if,else,switch,case等关键字 class Solution { public int sumNums(int n) { //结束条件 if (n == 1) { return 1; }
阅读全文
摘要:class Tree { constructor() { //初始树 this.root = null; this.result_array = []; } Node(val) { return { left: null, right: null, val: val } } insertNode(n
阅读全文
摘要:let nums = [1, 4, 2, 8, 7, 3, 5, 9] const quickSort = (nums) => { if (nums.length < 2) { return nums; } else { var left = []; var right = []; var pivo
阅读全文
摘要:题目:给定一个二叉树,找出其最大深度 一、使用递归 执行用时:84 ms, 在所有 JavaScript 提交中击败了92.40%的用户 内存消耗:40.7 MB, 在所有 JavaScript 提交中击败了36.99%的用户 var maxDepth = function(root) { if(!
阅读全文
摘要:题目: 给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点。 递归,深度遍历: var maxDepth = function(root) { if(!root) return 0; let left = maxDepth
阅读全文
摘要:递归: var isSymmetric = function(root) { if(!root) return true return TreeJug(root.left,root.right) }; function TreeJug(left, right) { if (!left && left
阅读全文
摘要:题目:给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。 第一种:暴力枚举,双层循环遍历。省略代码。 100ms 第二种:二分查找线性结构(出现bug,还在修改) 第三种:静态map结构 76ms const map
阅读全文

浙公网安备 33010602011771号