【问题描述】[中等]

【解答思路】

1动态规划

动态规划流程
第 1 步:设计状态
f(i, j)f(i,j) 为从棋盘左上角走至单元格 (i ,j)(i,j) 的礼物最大累计价值
第 2 步:状态转移方程
f(i,j)=max[f(i,j−1),f(i−1,j)]+grid(i,j)
第 3 步:考虑初始化

第 4 步:考虑输出

第 5 步:考虑是否可以状态压缩

时间复杂度:O(N^2) 空间复杂度:O(1)

class Solution {public int maxValue(int[][] grid) {//m 列数 n 行数int m = grid.length, n = grid[0].length;for(int j = 1; j < n; j++) // 初始化第一行grid[0][j] += grid[0][j - 1];for(int i = 1; i < m; i++) // 初始化第一列grid[i][0] += grid[i - 1][0];for(int i = 1; i < m; i++)for(int j = 1; j < n; j++) grid[i][j] += Math.max(grid[i][j - 1], grid[i - 1][j]);return grid[m - 1][n - 1];}
}

【总结】

1. 动态规划流程

第 1 步:设计状态
第 2 步:状态转移方程
第 3 步:考虑初始化
第 4 步:考虑输出
第 5 步:考虑是否可以状态压缩

2. 压缩空间可以在原数组上操作 行列
3.想清楚应该加什么,切忌想当然
3.类似题目[Leetcode][第64题][JAVA][64. 最小路径和]

转载链接:https://leetcode-cn.com/problems/li-wu-de-zui-da-jie-zhi-lcof/solution/mian-shi-ti-47-li-wu-de-zui-da-jie-zhi-dong-tai-gu/

[剑指offer]面试题第[47]题[JAVA][礼物的最大价值][动态规划]相关推荐

  1. [剑指offer]面试题第[59-2]题[JAVA][队列的最大值][暴力][双端队列]

    [问题描述][中等] [解答思路] 1. 暴力 复杂度分析 class MaxQueue {Queue<Integer> queue = new LinkedList();int maxV ...

  2. [剑指offer]面试题第[60]题[JAVA][n个骰子的点数][动态规划][空间优化]

    [问题描述][中等] 把n个骰子扔在地上,所有骰子朝上一面的点数之和为s.输入n,打印出s的所有可能的值出现的概率.你需要用一个浮点数数组返回答案,其中第 i 个元素代表这 n 个骰子所能掷出的点数集 ...

  3. [剑指offer]面试题第[55-1]题[JAVA][二叉树的深度][BFS][DFS]

    [问题描述][简单] 输入一棵二叉树的根节点,求该树的深度.从根节点到叶节点依次经过的节点(含根.叶节点)形成树的一条路径,最长路径的长度为树的深度.例如:给定二叉树 [3,9,20,null,nul ...

  4. [剑指offer]面试题第[1]题[JAVA][二维数组中的查找][数组][二分]

    [问题描述] 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该 ...

  5. [剑指offer]面试题第[36]题[JAVA][二叉搜索树与双向链表][递归]

    [问题描述][中等] [解答思路] 中序遍历 时间复杂度:O(N) 空间复杂度:O(N) class Solution {Node pre, head;public Node treeToDoubly ...

  6. [剑指offer]面试题第[44]题[JAVA][数字序列中某一位的数字][找规律]

    [问题描述][中等] [解答思路] 找规律 时间复杂度:O(logN) 空间复杂度:O(logN) class Solution {public int findNthDigit(int n) {in ...

  7. [剑指offer]面试题第[45]题[JAVA][把数组排成最小的数][快排][ Comparator][PriorityQueue]

    [问题描述][中等] [解答思路] 1. 快速排序 时间复杂度:O(N^2) 空间复杂度:O(1) class Solution {public String minNumber(int[] nums ...

  8. [剑指offer]面试题第[65]题[JAVA][不用加减乘除做加法][位运算]

    [问题描述][简单] [解答思路] 1. 位运算 时间复杂度:O(1) 空间复杂度:O(1) public int add(int a, int b) {while(b != 0) { // 当进位为 ...

  9. [剑指offer]面试题第[61]题[JAVA][扑克牌中的点数][HashSet][数组]

    [问题描述][简单] [解答思路] 1. 集合 Set + 遍历 时间复杂度:O(N) 空间复杂度:O(N) class Solution {public boolean isStraight(int ...

最新文章

  1. Android NDK JNI 简单例子2
  2. Sublime Text(2/3)编译lua
  3. Idea配置spark环境及编写scala代码
  4. 基于 Flink 的严选实时数仓实践
  5. boost::fusion::pop_front用法的测试程序
  6. DCMTK:OFStandard中“转换为标记”代码的测试程序
  7. 基于 ida 的反汇编转换 Obj 的可行性 笔记(2)
  8. JavaScript试题练习题
  9. LeetCode题——最长无重复子串
  10. ubuntu 下eclipse 启动时出现An error has occurred. See the log file的问题
  11. bzoj 1562 [NOI2009]变换序列 二分图
  12. 多线程编程(7) - 从 CreateThread 说起[续五]
  13. Python+OpenCV:Hough直线检测(Hough Line Transform)
  14. 支持ipv6类型的ddos测试工具thc-ipv6
  15. npm webstorm配置_怎样使用webstorm中配置nodejs环境及npm
  16. 机器学习实战—FPGrowth算法的实现
  17. mf4350d驱动下载linux,佳能 imageCLASS MF4350d 驱动程序下载-更新佳能软件(打印机)
  18. 流程管理体系实施策略
  19. Ubuntu18.04 无法解析域名
  20. javascript技巧搜集。

热门文章

  1. websocket + node.js聊天系统
  2. uilabel 自适应
  3. maya计算机内存不足请保存,Maya内存不足不能渲染怎么优化场景?
  4. 用excel制作双层饼图_双层饼图,让你的工作更出彩
  5. html生成1-32位随机数,如何生成一个32位的随机数 | 求索阁
  6. 如何关闭线程池?会创建不会关闭?调用关闭方法时线程池里的线程如何反应?
  7. 为何setRequestMethod(GET)不生效
  8. Android百度云推送接入,附完整代码
  9. ALIN10129-自查方案
  10. ubuntu18.04安装mysql8