11 2021 档案

摘要:背包最大重量为4,物品如下,问背包能背的物品最大价值是多少? 二维dp数组01背包 1.确定dp数组以及下标的含义 dp[i][j]表示从下标为[0-i]的物品中任意取,放进容量为j的背包,价值总和最大为多少 2.确定递推公式 两个方向推导 不放物品i:dp[i][j]=dp[i-1][j] 放物品 阅读全文
posted @ 2021-11-26 23:03 最近饭吃的很多 阅读(275) 评论(0) 推荐(0)
摘要:343、整数拆分 基本思想: 动态规划 具体实现: 1.确定dp数组以及下标的含义 dp[i]:分拆数字i,可以得到的最大乘积为dp[i] 2.确定递推公式 两种方法得到dp[i] (1)从1遍历j,j*(i-j),把i拆成了两个数相乘 (2)从1遍历j,j*dp[i-j],把i拆成立两个以及两个以 阅读全文
posted @ 2021-11-25 20:18 最近饭吃的很多 阅读(65) 评论(0) 推荐(0)
摘要:62、不同路径 基本思想: 动态规划 具体实现: 1.确定dp数组以及下标的含义 dp[i][j]:表示从(0,0)出发,到(i,j)有dp[i][j]条不同的路径 2.确定递推公式 求dp[i][j],两个方向来推导,即dp[i - 1][j] 和 dp[i][j - 1] dp[i][j] = 阅读全文
posted @ 2021-11-24 22:58 最近饭吃的很多 阅读(100) 评论(0) 推荐(0)
摘要:746、使用最小花费爬楼梯 基本思想: 动态规划 具体实现: 1、确定dp数组以及下标的含义 dp[i]:从第i个台阶往上走1或2个台阶所花费的最少体力为dp[i] 2、确定递推公式 有两个途径可以得到dp[i],一个是dp[i-1],一个是dp[i-2] dp[i] = min(dp[i-1]+d 阅读全文
posted @ 2021-11-23 22:50 最近饭吃的很多 阅读(63) 评论(0) 推荐(0)
摘要:108、有序数组转换为二叉搜索树 基本思想: 寻找切割点,分割点为当前节点,然后递归左区间和右区间 具体实现: 1、确定返回值以及参数 返回值:需要用递归的返回值来构造节点的左右孩子 参数:传入数组,左下标和右下标用来操作数组 定义左闭右闭区间,分割过程也坚持左闭右闭 2、递归终止条件 区间left 阅读全文
posted @ 2021-11-20 22:53 最近饭吃的很多 阅读(46) 评论(0) 推荐(0)
摘要:530、二叉搜索树的最小绝对差 基本思想: 中序遍历 具体实现: 需要记录前一节点,用pre记 代码: class Solution { TreeNode pre;//记录上一个遍历的节点 int result = Integer.MAX_VALUE; public int getMinimumDi 阅读全文
posted @ 2021-11-16 22:49 最近饭吃的很多 阅读(44) 评论(0) 推荐(0)
摘要:617、合并二叉树 基本思想: 具体实现: 1、确定参数和返回值 参数:两个二叉树的根节点 返回值:合并之后新二叉树的根节点 2、确定终止条件 遍历到叶子节点 3、单层递归逻辑 TreeNode newRoot = new TreeNode(root1.val + root2.val); newRo 阅读全文
posted @ 2021-11-15 20:57 最近饭吃的很多 阅读(23) 评论(0) 推荐(0)
摘要:513、找树左下角的值 基本思想: 树的最后一行找到最左边的值 树的最后一行:深度最大的叶子节点 前序遍历 最左边:优先左边搜索 前序遍历 具体实现: 1、确定递归参数和返回值 参数:根节点和int型变量记录深度 返回值:不需要 如果要遍历整棵树,递归函数不能有返回值 如果要遍历某一条固定路线,递归 阅读全文
posted @ 2021-11-13 20:19 最近饭吃的很多 阅读(54) 评论(0) 推荐(0)
摘要:404、左叶子之和 基本思想: 首先要注意是判断左叶子,不是二叉树左侧节点,所以不能用层序遍历。 左叶子的定义:如果左节点不为空,且左节点没有左右孩子,那么这个节点就是左叶子 具体实现: 1、递归参数和返回值 参数:根节点 返回值:数值之和 2、终止条件 root==null 3、单层递归的逻辑 遇 阅读全文
posted @ 2021-11-10 22:44 最近饭吃的很多 阅读(31) 评论(0) 推荐(0)
摘要:257、二叉树的所有路径 具体实现: 1.递归函数参数和返回值 参数:根节点,记录每一条路径的path,存放结果集的result 返回值:无 2.递归终止条件 遍历到叶子节点,也就是这个节点没有左孩子和右孩子时 path来记录路径 res存放结果 if (root.left == null && r 阅读全文
posted @ 2021-11-09 21:44 最近饭吃的很多 阅读(38) 评论(0) 推荐(0)
摘要:110、平衡二叉树 具体实现: 1.明确高度和深度 求深度用前序遍历,高度用后序遍历 2.这道题比较高度用后序遍历 (1)确定递归的参数和返回值 参数:根节点 返回值:传入节点为根节点树的深度 如果当前传入节点为根节点的二叉树不是二叉平衡树了,就返回-1来标记已经不符合平衡树的规则 (2)确定终止条 阅读全文
posted @ 2021-11-09 21:05 最近饭吃的很多 阅读(136) 评论(0) 推荐(0)
摘要:104、二叉树的最大深度 基本思想: 后序遍历 具体实现: 1.确定递归的参数和返回值: 参数:根节点 返回值:int类型,因为返回的是树的深度 2.确定终止条件 节点为空时,返回0,说明这个树的高度为0 3.单层递归的逻辑 先求左子树的深度, 再求右子树的深度, 最后求左右深度的最大的数值,然后+ 阅读全文
posted @ 2021-11-08 22:25 最近饭吃的很多 阅读(54) 评论(0) 推荐(0)
摘要:101、对称二叉树 基本思想: 比较的是两个子树的里侧和外侧 遍历顺序为后序遍历, 因为要通过递归函数的返回值来判断两个子树的内侧节点和外侧节点是否相等 一个树的遍历顺序是左右中,一个树的遍历顺序是右左中 具体实现: 1.确定递归函数的参数和返回值 参数:左子树节点和右子树节点 返回值:布尔类型 2 阅读全文
posted @ 2021-11-07 17:58 最近饭吃的很多 阅读(53) 评论(0) 推荐(0)
摘要:102、二叉树的层序遍历 基本思想: 从上到下、从左到右依次依次将每个数放入到队列中,然后按顺序依次打印就是想要的结果 具体实现: 1.先将二叉树的根节点放到队列que中 2.第一层循环中 定义列表itemList放二叉树每一层的结果 3.第二程循环中 len控制每一层,减到0的话说明二叉树的一层遍 阅读全文
posted @ 2021-11-06 22:21 最近饭吃的很多 阅读(58) 评论(0) 推荐(0)
摘要:94、二叉树的中序遍历 基本思想: 中序遍历,左中右,先访问的是二叉树顶部的节点, 然后一层一层向下访问,直到到达树左面的最底部, 再开始处理节点(也就是在把节点的数值放进result数组中), 这就造成了处理顺序和访问顺序是不一致的。 在使用迭代法写中序遍历,就需要设置一个当前节点来帮助访问节点, 阅读全文
posted @ 2021-11-05 20:55 最近饭吃的很多 阅读(48) 评论(0) 推荐(0)
摘要:145、二叉树的后序遍历 具体实现: 1.确定递归函数的参数和返回值 参数:头结点,放节点的数组 2.确定终止条件 当前遍历的节点是空 3.单层递归逻辑 后序遍历是右左中,所以先取右节点的数值 代码: class Solution { public List<Integer> postorderTr 阅读全文
posted @ 2021-11-05 20:54 最近饭吃的很多 阅读(34) 评论(0) 推荐(0)
摘要:347、前k个高频元素 基本思想: 要统计元素出现频率 对频率排序 找出前K个高频元素 具体实现: 对频率进行排序,使用优先级队列 https://blog.csdn.net/qq_35326718/article/details/72866180 1.满二叉树除了叶子节点,其余所有节点都有左右孩子 阅读全文
posted @ 2021-11-04 22:15 最近饭吃的很多 阅读(97) 评论(0) 推荐(0)
摘要:150、逆波兰表达式求值 基本思想: 和1047题想法是差不多,只不过本题不要相邻元素做消除了,而是做运算 具体实现: 代码: class Solution { public int evalRPN(String[] tokens) { Deque<Integer> stack = new Link 阅读全文
posted @ 2021-11-03 21:06 最近饭吃的很多 阅读(124) 评论(0) 推荐(0)
摘要:20、括号合法性 基本思想: 栈(用deque实现的栈) 具体实现: 在匹配左括号的时候,右括号先入栈,就只需要比较当前元素和栈顶相不相等就可以了,比左括号先入栈代码实现要简单 情况1:已经遍历完了字符串,但是栈不为空,说明有相应的左括号没有右括号来匹配,所以return false 情况2:遍历字 阅读全文
posted @ 2021-11-02 22:47 最近饭吃的很多 阅读(110) 评论(0) 推荐(0)
摘要:栈与队列基础: https://blog.csdn.net/m0_51167384/article/details/114456556?spm=1001.2101.3001.6650.8&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edef 阅读全文
posted @ 2021-11-02 22:31 最近饭吃的很多 阅读(50) 评论(0) 推荐(0)
摘要:454、四数之和 基本思想: HashMap 具体实现: 1.定义一个HashMap,key放a和b两数之和,value放a和b两数之和出现的次数 2.遍历num1和nums2数组,统计两个数组元素之和出现的次数,放到map中 3.定义int变量res,用来统计a+b+c+d = 0出现的次数 4. 阅读全文
posted @ 2021-11-01 22:28 最近饭吃的很多 阅读(40) 评论(0) 推荐(0)