算法之最后一块石头重量
有一堆石头,每块石头的重量都是正整数。 每一回合,从中选出两块 最重的 石头,然后将它们一起粉碎。假设石头的重量分别为 x 和 y,且 x <= y。那么粉碎的可能结果如下: - 如果 x == y,那么两块石头都会被完全粉碎; - 如果 x != y,那么重量为 x 的石头将会完全粉碎,而重...
270 字
|
1 分钟
算法之合并二叉树
给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。 你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 NULL 的节点将直接作为新二叉树的节点。 思路 - 同步地遍历两棵树上的节点,直接在 ...
369 字
|
2 分钟
算法之平衡二叉树
给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为: 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。 分解子问题: 当前节点是否是平衡节点,判断依据为: - 左子树高度与右子树高度之差不超过1 - 左节点是平衡节点 - 右节点是平衡节点 ...
252 字
|
1 分钟
算法之二叉树的深度
(leecode 104) 输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。 例如: 给定二叉树 [3,9,20,null,null,15,7], 1.递归实现 思路:在存在节点的情况下,每次设置一个起...
353 字
|
2 分钟
算法之对称二叉树
请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。 例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 思路: 要想实现对称的二叉树需要满足: 实现: js / Definition for a binary tree node...
169 字
|
1 分钟
算法之二叉树层序遍历
从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。 思路: 稍微改变一下对队列的使用,就可以在遍历过程中体现出层次,大致过程如下: - 初始化 queue,用于存储当前层的节点 - 检查 queue 是否为空 - 如果不为空:依次遍历当前 queue 内的...
324 字
|
2 分钟
浅拷贝和深拷贝
什么是拷贝? js let arr = [1, 2, 3]; let newArr = arr; newArr[0] = 100; console.log(arr);//[100, 2, 3] 这是直接赋值的情况,不涉及任何拷贝。当改变newArr的时候,由于是同一个引用,arr指向的值...
2258 字
|
11 分钟
数组扁平化
对于前端项目开发过程中,偶尔会出现层叠数据结构的数组,我们需要将多层级数组转化为一级数组(即提取嵌套数组元素最终合并为一个数组),使其内容合并且展开。那么该如何去实现呢? 需求:多维数组=一维数组 js let ary = [1, [2, [3, [4, 5]]], 6];// - [1, 2,...
245 字
|
1 分钟