代码随想录训练营day39
题目一:不同路径
力扣题目链接
题目描述:
一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。
机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。
问总共有多少条不同的路径?
思路分析:
动归解题:f[i, j]表示到坐标(i, j)的方案数(count)。转移方程:f[i][j] = f[i - 1][j] + f[i][j - 1];
解法:
class Solution {public int N = 110;public int[][] f = new int[N][N];public int uniquePaths(int m, int n) {f[1][1] = 1; // 从(1, 1) 不必处理越界for (int i = 1; i <= m; i++)for (int j = 1; j <= n; j++)f[i][j] += f[i - 1][j] + f[i][j - 1];return f[m][n];}
}
题目二:不同路径||
力扣题目链接
题目描述:
一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。
机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish”)。
现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?
网格中的障碍物和空位置分别用 1 和 0 来表示。
思路分析:动归五部曲,代码随想录有图解,更好理解
解法:
class Solution {public int uniquePathsWithObstacles(int[][] obstacleGrid) {int m = obstacleGrid.length;int n = obstacleGrid[0].length;int[][] dp = new int[m][n];//如果在起点或终点出现了障碍,直接返回0if (obstacleGrid[m - 1][n - 1] == 1 || obstacleGrid[0][0] == 1) {return 0;}for (int i = 0; i < m && obstacleGrid[i][0] == 0; i++) {dp[i][0] = 1;}for (int j = 0; j < n && obstacleGrid[0][j] == 0; j++) {dp[0][j] = 1;}for (int i = 1; i < m; i++) {for (int j = 1; j < n; j++) {dp[i][j] = (obstacleGrid[i][j] == 0) ? dp[i - 1][j] + dp[i][j - 1] : 0;}}return dp[m - 1][n - 1];}
}
代码随想录训练营day39相关推荐
- 【代码随想录训练营】Day43-动态规划
代码随想录训练营 Day43 今日任务 1049.最后一块石头的重量Ⅱ 494.目标和 474.一和零 语言:Java 1049. 最后一块石头的重量Ⅱ 链接:https://leetcode.cn/ ...
- 代码随想录训练营day8
目录 题目一:反转字符串 解法一:数值交换 解法二:位运算 题目二:反转字符串|| 题目三:替换空格 解法一:双指针 解法二:使用额外空间 题目四:翻转字符串里的单词 解法一: 解法二:纯属娱乐 题目 ...
- 【代码随想录训练营】【Day14】第六章|二叉树|理论基础|递归遍历|迭代遍历|统一迭代
理论基础 二叉树的定义形式有:节点指针和数组 在数组中,父节点的下标为i,那么其左孩子的下标即i*2+1,右孩子的下标即为i*2+2 二叉树的常见遍历形式有:前序遍历.后序遍历.中序遍历和层序遍历 前 ...
- 代码随想录训练营day56
题目一:两个字符串的删除操作 力扣题目链接 题目描述: 给定两个单词 word1 和 word2 ,返回使得 word1 和 word2 相同所需的最小步数. 每步 可以删除任意一个字符串中的一个字 ...
- 代码随想录训练营day57
题目一:回文子串 力扣题目链接 题目描述: 给你一个字符串 s ,请你统计并返回这个字符串中 回文子串 的数目. 回文字符串 是正着读和倒过来读一样的字符串. 子字符串 是字符串中的由连续字符组成的一 ...
- 代码随想录训练营day53
题目一:最长公共子序列 力扣题目链接 题目描述: 给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子序列 的长度.如果不存在 公共子序列 ,返回 0 . 一个字符串的 子序列 ...
- 代码随想录训练营day55
题目一:判断子序列 力扣题目链接 题目描述: 给定字符串 s 和 t ,判断 s 是否为 t 的子序列. 字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符 ...
- 代码随想录训练营day52
题目一:最长上升子序列 力扣题目链接 题目描述: 给你一个整数数组 nums ,找到其中最长严格递增子序列的长度. 子序列 是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序. ...
- 代码随想录训练营day48
题目一:打家劫舍 力扣题目链接 题目描述: 你是一个专业的小偷,计划偷窃沿街的房屋.每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上 ...
最新文章
- java 支付宝h5网页支付接口,移动端h5网页调用支付宝支付接口
- dw html5怎么美化,DW CS5/CS6代码格式化、美化插件 Dreamweaver代码格式化美化插件
- linux c ide ssh,VSCode配置远程SSH-IDE
- Learning Attention-based Embeddings for Relation Prediction in Knowledge Graphs Deepak
- Ubuntu12.04 Jdk1.7 Tomct7.0部署配置
- c# 字典排序_Python零基础入门之列表与字典
- virtualbox 使用
- 什么是负边沿触发_用好示波器必须学会的知识:触发方式
- onvif学习笔记5:onvif框架代码初步了解
- everything is nothing
- 风景怡人一个生态村子 -国稻种芯-百色:华润谋定希望小镇
- 应用回归分析第五版pdf百度网盘_常用软件分享PDF转换word/excel/text等
- 一起写RPC框架(七)RPC网络模块的搭建五 Netty模块
- Eclipse下载与安装教程(最简单版)
- win7系统如何关闭安全模式,关闭安全模式的方法
- 关于Linux_STORAGE_WRITE_ERROR_:.var/Cache/Install/c6bbce5b1f1dcf027c8ceb5cf5141b65.php
- 一筐鸡蛋一个一个拿正好拿完java_求解:一筐鸡蛋:9个9个拿正好拿完8个8个拿还剩1个...
- 2、海思3518ev300 设置usb网络
- 云计算技术与应用基础 (第四章知识巩固)
- 华硕主板配置Ubuntu16.04LTS+win10双系统