dp 动态规划 力扣

server/2024/9/24 10:47:27/

64. 最小路径和

给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。

说明:每次只能向下或者向右移动一步。

示例 1:

输入:grid = [[1,3,1],[1,5,1],[4,2,1]]
输出:7
解释:因为路径 1→3→1→1→1 的总和最小。

示例 2:

输入:grid = [[1,2,3],[4,5,6]]
输出:12

提示:

  • m == grid.length
  • n == grid[i].length
  • 1 <= m, n <= 200
  • 0 <= grid[i][j] <= 200
class Solution {public int minPathSum(int[][] grid) {int dp[][]=new int [grid.length][grid[0].length];int sum=0;for (int i = 0; i < grid[0].length; i++) {sum+=grid[0][i];dp[0][i]=sum;}sum=0;for (int i = 0; i < grid.length; i++) {sum+=grid[i][0];dp[i][0]=sum;}for (int i = 1; i < grid.length; i++) {for (int j = 1; j < grid[0].length; j++) {dp[i][j]=Math.min(dp[i-1][j]+grid[i][j],dp[i][j-1]+grid[i][j]);}}return dp[grid.length-1][grid[0].length-1];}
}

53. 最大子数组和

给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。

子数组

是数组中的一个连续部分。

示例 1:

输入:nums = [-2,1,-3,4,-1,2,1,-5,4]
输出:6
解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。

示例 2:

输入:nums = [1]
输出:1

示例 3:

输入:nums = [5,4,-1,7,8]
输出:23

提示:

  • 1 <= nums.length <= 105
  • -104 <= nums[i] <= 104

以下是错误示范

//这个超出内存限制。。。class Solution {public int maxSubArray(int[] nums) {int max=nums[0];int dp[][]=new int [nums.length][nums.length];for (int i = 0; i < dp.length; i++) {dp[i][i]=nums[i];max=Math.max(dp[i][i],max);}for (int i = 1; i < nums.length; i++) {for (int j = 0; j < i; j++) {dp[i][j]=dp[i-1][j]+nums[i];max=Math.max(dp[i][j],max);}}return max;}
}
//以为是定义了二维数组dp[][]占内存太大
//改了之后超时。。。class Solution {public int maxSubArray(int[] nums) {int max=nums[0];for (int t = 0; t < nums.length; t++) {int sum=0;for (int i = t; i < nums.length; i++) {sum+=nums[i];max=Math.max(sum,max);}}return max;}
}

62. 不同路径

一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。

机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。

问总共有多少条不同的路径?

示例 1:

输入:m = 3, n = 7
输出:28

示例 2:

输入:m = 3, n = 2
输出:3
解释:
从左上角开始,总共有 3 条路径可以到达右下角。
1. 向右 -> 向下 -> 向下
2. 向下 -> 向下 -> 向右
3. 向下 -> 向右 -> 向下

示例 3:

输入:m = 7, n = 3
输出:28

示例 4:

输入:m = 3, n = 3
输出:6

提示:

  • 1 <= m, n <= 100
  • 题目数据保证答案小于等于 2 * 109
class Solution {public int uniquePaths(int m, int n) {int[][] dp=new int[m][n];for (int i = 0; i < m; i++) {dp[i][0]=1;}for (int i = 1; i < n; i++) {dp[0][i]=1;}for (int i = 1; i < m; i++) {for (int j = 1; j < n; j++) {dp[i][j]=dp[i-1][j]+dp[i][j-1];}}return dp[m-1][n-1];}
}

LCR 127. 跳跃训练

今天的有氧运动训练内容是在一个长条形的平台上跳跃。平台有 num 个小格子,每次可以选择跳 一个格子 或者 两个格子。请返回在训练过程中,学员们共有多少种不同的跳跃方式。

结果可能过大,因此结果需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。

示例 1:

输入:n = 2
输出:2

示例 2:

输入:n = 5
输出:8

提示:

  • 0 <= n <= 100

以下是错误示范

//超时//斐波那契
class Solution {public int trainWays(int num) {//到第n个格子的方案为f(n)//f(n)=f(n-1)+f(n-2)if(num==0) return 1;if(num==1) return 1;return trainWays(num-1)+trainWays(num-2);}
}


http://www.ppmy.cn/server/34638.html

相关文章

@click=“handleClick()“不会传递默认事件参数

当你使用click"handleClick()"这种形式绑定事件处理器时&#xff0c;Vue会将它视为一个函数调用&#xff0c;而不是一个事件监听器。在这种情况下&#xff0c;Vue不会自动传递原生事件对象作为默认参数。 如果你想让Vue自动传递原生事件对象作为默认参数&#xff0c…

轻松获取商机!淘宝商品关键词搜索电商API接口揭秘

利用科技手段来获得商机已经成为现代商业发展的重要途径之一。在电商领域&#xff0c;淘宝作为中国最大的网购平台之一&#xff0c;通过淘宝商品关键词搜索电商API接口&#xff0c;可以轻松获取商机&#xff0c;开拓市场。联讯数据将揭秘淘宝商品关键词搜索电商API接口&#xf…

美国加州65认证什么产品需要做

美国加州65认证是一种针对可能含有害化学物质的产品进行的测试&#xff0c;这些化学物质可能对环境和人体健康造成影响。加州65认证的实施基于《1986年安全饮用水和有毒物质执行法案》&#xff08;Proposition 65&#xff09;&#xff0c;该法案要求企业在向加州销售或分销产品…

(优作)基于STM32 人群定位、调速智能风扇设计(程序、设计报告、视频演示)

引言 当今生活中&#xff0c;风扇已成为人们解暑的重要工具&#xff0c;然而使用风扇缓解夏日酷热的同时也存在着一些问题。比如&#xff0c;由于风扇的转动方向只能机械式的保持在一定范围内&#xff0c;而不能根据人群的位置做出具体的调整&#xff0c;即在一片区域内&#x…

银行操作风险名词解释及示例

名词解释及示例 一、操作风险事件 操作风险事件是指由操作风险引发&#xff0c;导致银行保险机构发生实际或者预计损失的事件。银行保险机构分别依据商业银行资本监管规则和保险公司偿付能力监管规则进行损失事件分类。 二、法律风险 法律风险包括但不限于下列风险&#xff…

input,el-input输入框正则验证输入的非数字转为空

<input οninput"this.valuethis.value.replace(/\D/g,)" maxlength"4" v-model"code" placeholder"请输入验证码" /> <el-input v-model"unboundTel" placeholder"请输入解绑手机号" clearable blur&q…

指数分布、瑞利分布和Nakagami-m的联系

指数分布: Y = X 1 2 + X 2 2 Y=X_1^{2}+X_2^2 Y=X12​+X22​,即(n=2)的卡方分布 Y ∼ exp ⁡ ( 2 σ 2 ) Y\sim \exp(2\sigma^2) Y∼exp(2σ2) PDF: f Y ( y ) = 1 2 σ 2 e − y 2 σ 2 , y > 0 f_{Y}(y)=\frac{1}{2\sigma^2}e^{-\frac{y}{2\sigma^2}},y>0 fY​(y…

【python】扫描指定目录下的所有文件,并将扫描的文本内容邮件发送到指定邮箱

scan_file.py扫描目录函数 """文件扫描脚本""" import os import sysdef scan_file(path, indent""):# 初始化一个列表来存储扫描结果scan_results []# 获取当前指定目录中的所有文件(文件夹文件)files os.listdir(path)# 遍历列表…