摘要: 最大子序和(最大子段和)是非常经典的动态规划题目,其变形题目也很多。 LeetCode53最大子序和 题目描述: 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 示例: 输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释:  阅读全文
posted @ 2019-06-17 23:09 zzu_Lee 阅读(336) 评论(0) 推荐(0) 编辑
摘要: 动态规划(DP)要多做题,字符串上的dp和树形dp都比较难,但是不常考,最常考的还是数组上的dp题目。 写DP题目时最关键的还是要想到用dp这种方法。动态规划题目一般暴力枚举都可以解决,但是暴力时间复杂度一般都比较大,那么就要想到贪心和动态规划。 LeetCode198 打家劫舍 题目描述: 你是一 阅读全文
posted @ 2019-06-17 21:53 zzu_Lee 阅读(500) 评论(0) 推荐(0) 编辑
摘要: 题目描述: 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数。 方法一: 很容易想到上面这种方法,其时间复杂度为O(2^n),提交OJ会超时。 方法2: 如何用递推求出第i阶爬法数量? 执行用时在所有 阅读全文
posted @ 2019-06-17 20:57 zzu_Lee 阅读(729) 评论(0) 推荐(0) 编辑
摘要: 动态规划(DP)概述: 动态规划是运筹学的一个分支。(运筹学,是现代管理学的一门重要专业基础课。该学科利用统计学、数学模型和算法等方法,去寻找复杂问题中的最佳或近似最佳的解答。) 以局部最优解最终求得全局最优解。在设计动态规划算法时,需要确认原问题与子问题、动态规划状态、边界状态结值、状态转移方程等 阅读全文
posted @ 2019-06-17 19:48 zzu_Lee 阅读(4330) 评论(0) 推荐(1) 编辑
摘要: 题目描述:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。 如果是返回true,否则返回false。假设输入的数组的任意两个数字都互不相同。 例如,输入{5,7,6,9,11,10,8},返回true。 输入{7,4,6,5},返回false。 在做这道题之前我们先来熟悉一下二叉搜索树 阅读全文
posted @ 2019-06-17 14:44 zzu_Lee 阅读(606) 评论(0) 推荐(0) 编辑
摘要: 图1所示为二叉树的层次遍历,即按照箭头所指方向,按照1、2、3的层次顺序,对二叉树每个节点进行访问 (此图反映的是自左至右的层次遍历,自右至左的方式类似)。 要进行层次遍历,需要建立一个队列。先将二叉树头节点入队列,然后出队列,访问该节点, 如果它有左子树,则将左子树的根结点入队;如果它有右子树,则 阅读全文
posted @ 2019-06-17 10:15 zzu_Lee 阅读(751) 评论(0) 推荐(0) 编辑