337.打家劫舍 III 后序遍历+动态规划 看到树形结构优先考虑root和左右子树的关系。 使用后序遍历是因为需要得到两个子节点的状态才能计算当前节点。 时间复杂度:O(N)空间复杂度:O(N) 2021-09-20 算法 > leetcode
433.最小基因变化 leetcode 广度优先搜索 广度优先搜索的时候,注意要去掉已遍历过的情况,方法是从bankMap中删除已遍历的元素。 时间复杂度:O(C x n x m),其中C为基因位的可选项数量(此处为ACGT四种,C为4), m为bank的长度,n为基因序列的长度。空间复杂度: O(m x n)。合法性的哈希表中一共存有 m个元素,队列中最多有 mm 个元素,每个元素的空间为 O(n)。O(m + n 2021-09-20 算法 > leetcode
450.删除二叉搜索树中的节点 leetcode 递归方法 根据二叉搜索树的特性寻找要删除的节点 如果删除节点就是叶子节点,直接删除 如果删除节点的左孩子或者有孩子为空,则直接删除当前节点,把非空的孩子节点替换当前节点 如果删除节点左右孩子都不为空,则寻找大于删除节点的最小节点来替代删除节点,这个节点在删除节点右子树的最左端叶子节点。该节点没有左子树,删除该节点后也比较好处理,且可以保证被删除节点的左子树都小于它,被删除节点的 2021-09-20 算法 > leetcode
51.N皇后问题 leetcode 回溯法解题。 考虑给每行设置皇后在哪一列,所以维护一个列数组表示哪些列有皇后了,则这些列不能再分配皇后。 皇后所在的斜线上也不能有皇后,斜线规律为行数和列数之差相等以及行数和列数之和相等,故维护一个行数列数之差的map以及行数列数之和的map。 递归遍历每行的列,看是否能够在该行该列防止皇后。 每层递归结束记得还原现场,即修改列数组和斜线map。 2021-09-20 算法 > leetcode