一、介绍 这题看似简单的回溯,却有很多边界问题,足足搞了3-4个小时才通过。 二、题目 n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。 上图为 8 皇后问题的一种解法。 给定一个整数 n,返回所有不同的 n 皇后问题的解决方案。 每一种解法包含一个…
一、认识 最近跟朋友聊到刷题,朋友建议我先将思路写下来,理清楚了再开始写代码。这样做确实有好处,因为写思路时,会更早的发现问题,解决了,想清楚了,再去写代码。这样就能避免走很多弯路。 做这道题的时候,就没有盲目的开始写了。先把思路写出来,写的时候就发现了问题,并解决它,才开始写代码。因此,这次写的代码都没有浪费,以前刷题时经常写一些最终没用到的代码…
一、介绍 斐波那契数应该是动态规划的入门题,看到过很多次了。解法一般分为两种,自下而上和自上而下+备忘录(优化重复子问题) 使用leetcode的idea插件 二、题目 斐波那契数,通常用 F(n) 表示,形成的序列称为斐波那契数列。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是: F(0) = 0, F(1) = 1…
1. 要点 这道题一看就是考优化,尝试了很多次才过了,要点的话,就是用数组存结果时(打表),创建的数组太大,空间要求过不了,并且没有充分利用这个数组,很多元素都是空的.想了想这个数组的使用场景,用下标获取结果,那不就是Map嘛,要多大,就用多大,这下就不会浪费空间了 2. 题目 实现函数double Power(double base, int e…
1. 要点 二叉搜索树的特点:中序遍历结果递增,可用来做验证 复习下中序遍历(太久没写,写成前后序遍历的先push去了) 2. 题目 给你二叉搜索树的根节点 root ,该树中的两个节点被错误地交换。请在不改变其结构的情况下,恢复这棵树。 进阶:使用 O(n) 空间复杂度的解法很容易实现。你能想出一个只使用常数空间的解决方案吗? 3. 示例 1: …
1. 要点 利用Map来优化For循环,减少时间复杂度 2. 题目 根据一棵树的前序遍历与中序遍历构造二叉树。 注意: 你可以假设树中没有重复的元素。 例如,给出 前序遍历 preorder = [3,9,20,15,7] 中序遍历 inorder = [9,3,15,20,7] 返回如下的二叉树: 3 / \ 9 20 / \ 15 7 3. 代…
1.要点 搞清楚搜索二叉树和中序遍历的关系 看看甜姨的递归(直接用答题的函数,一直往上return) 2.题目 给定一个二叉树,判断其是否是一个有效的二叉搜索树。 假设一个二叉搜索树具有如下特征: 节点的左子树只包含小于当前节点的数。 节点的右子树只包含大于当前节点的数。 所有左子树和右子树自身必须也是二叉搜索树。 3.示例 示例 1: 输入: 2…
1.要点 二叉树遍历 重复在数组中查找某个数时(重复+查找=二重循环),应考虑是否可以用map 2.题目 输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。 3.示例 给出 前序遍历 preorder = [3,9,20,15,7] 中序遍历 inorder = [9,3,15,20,7]…
1.要点 动态规划思想 斐波拉奇数列变种 2.题目 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。 答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。 3.示例 示例 1: 输入:n = 2 输出:2 示例 2: 输入:n = 7 输出:21 4…
1.要点 Java中基本类型的取值范围 斐波拉奇数列从后往前递归时会有大量重复运算。例如 fn(10)=fn(9)+fn(8) fn(9)=fn(8)+fn(7) fn(8)重复运算了 2.题目 写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项。斐波那契数列的定义如下: F(0) = 0, F(1) = 1 F(N) =…