
动态规划
动态规划
低头看天,抬头走路
句句都是正确的废话,招招都是致命的空招。
展开
-
leetcode152. 乘积最大子数组
题目给你一个整数数组 nums ,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。示例 1:输入: [2,3,-2,4]输出: 6解释: 子数组 [2,3] 有最大乘积 6。示例 2:输入: [-2,0,-1]输出: 0解释: 结果不能为 2, 因为 [-2,-1] 不是子数组。思路1.f(n)与f(n - 1)有关,且存在重复计算,考虑动态规划2.这里主要比较f(n - 1)与包括第n个元素在内的子数组的乘积, 如果每次遍历相乘会超原创 2021-01-10 17:00:21 · 156 阅读 · 0 评论 -
leetcode95. 不同的二叉搜索树 II
题目给定一个整数 n,生成所有由 1 … n 为节点所组成的 二叉搜索树 。示例:输入:3输出:[ [1,null,3,2], [3,2,null,1], [3,1,null,null,2], [2,1,3], [1,null,2,null,3]]解释:以上的输出对应以下 5 种不同结构的二叉搜索树: 1 3 3 2 1 \ / / / \ \ 3 2原创 2021-01-10 16:04:25 · 128 阅读 · 0 评论 -
leetcode96. 不同的二叉搜索树
题目给定一个整数 n,求以 1 … n 为节点组成的二叉搜索树有多少种?示例:输入: 3输出: 5解释:给定 n = 3, 一共有 5 种不同结构的二叉搜索树: 1 3 3 2 1 \ / / / \ \ 3 2 1 1 3 2 / / \ \ 2 1 2原创 2021-01-10 15:46:20 · 129 阅读 · 0 评论 -
leetcode70 爬楼梯
题目假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1 阶 + 1 阶2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1 阶 + 1 阶 + 1 阶1 阶 + 2 阶2 阶 + 1 ...原创 2019-07-09 22:50:27 · 172 阅读 · 0 评论 -
leetcode64. 最小路径和
题目给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。输入:[ [1,3,1], [1,5,1], [4,2,1]]输出: 7解释: 因为路径 1→3→1→1→1 的总和最小。思路直接修改原始数组实现class Solution {public: int minP...原创 2019-09-17 15:28:12 · 119 阅读 · 0 评论 -
剑指offer第9题:斐波纳西数列
输入:n 输出:f(n) 思路:由f(1),f(2)得到f(3);f(2),f(3)得到f(4),继而得到f(n)public class Fibonacii {//剑指offer第九题,Fibonacii数列 public long fibonacii(int n){ int[] result = {0,1}; if(n < 2){原创 2016-07-31 23:12:10 · 955 阅读 · 0 评论 -
背包算法
背包算法大致可以分为三类:1.01背包:有n种物品与承重为m的背包。每种物品只有一件,每个物品都有对应的重量weight[i]与价值value[i],求解如何装包使得价值最大。f[i][j] = max(f[i-1][j],f[i-1][j-w[i] + w[i])要么放入i物品,要么不放入i物品2.完全背包:有n种物品与承重为m的背包。每种物品有无限多件,每个物品都有对应的重量weigh...原创 2019-01-06 18:59:02 · 5605 阅读 · 0 评论