当前位置: 首页 > news >正文

LeetCode Hot100(多维动态规划)

62. 不同路径

比较板子的dp,实际上就是到达一个点有两种方式,从上面来或者是左边,加起来就可以了

class Solution {public int uniquePaths(int m, int n) {int [][]arr = new int[m+2][n+2];arr[1][1]=1;for(int i=1;i<=m;i++){for(int j=1;j<=n;j++){if(i==1&&j==1){continue;}arr[i][j]+=arr[i-1][j]+arr[i][j-1];}}return arr[m][n];}
}

64. 最小路径和

跟上一题一样,该题取一下最小值即可

class Solution {public int minPathSum(int[][] grid) {if(grid.length==0){return 0;}for(int i=0;i<grid.length ; i ++){for(int j=0;j<grid[i].length;j++){if(i>0&&j>0){grid[i][j]+=Math.min(grid[i-1][j],grid[i][j-1]);}else if(i==0){if(j>0){grid[i][j]+=grid[i][j-1];}}else if(j==0){if(i>0){grid[i][j]+=grid[i-1][j];}}}}return grid[grid.length-1][grid[grid.length-1].length-1];}
}

5. 最长回文子串

这边直接采取的暴力的做法,枚举每一个字符串,看看是不是回文的即可

class Solution {public static String longestPalindrome(String s) {int wei=0;int len=1;char []arr=s.toCharArray();for(int i=0;i<arr.length;i++){for(int j=i;j<arr.length;j++){int f=(j-i);int mark=0;for(int p=0;p<=f;p++){if(arr[i+p]!=arr[j-p]){mark=1;break;}}if(mark==0){if(j-i+1>=len){len=j-i+1;wei=i;}}}}String s2=s.substring(wei,wei+len);return s2;}
}

1143. 最长公共子序列

也算是比较板子的dp了,我们设dp[i][j]为以i和j为结尾的最长子序列,它实际上有两种可能,一个是i和j对应的字符相等,那么直接就是i-1,j-1加1即可,如果不同,就是i-1,j,或者i,j-1转移过来即可

class Solution {public static void main(String[] args) {longestCommonSubsequence("abcde","ace");}public static int longestCommonSubsequence(String text1, String text2) {int len=0;char []s2=text2.toCharArray();char []s1=text1.toCharArray();int [][]dp=new int[text1.length()][text2.length()];int maxx=0;for(int i=0;i<s1.length;i++){for(int j=0;j<s2.length;j++){if(s1[i]==s2[j]){if(i>=1&&j>=1){dp[i][j]=Math.max(dp[i-1][j-1]+1,dp[i][j]);}else{dp[i][j]=1;}}else{if(i>=1){dp[i][j]=Math.max(dp[i-1][j],dp[i][j]);}if(j>=1){dp[i][j]=Math.max(dp[i][j-1],dp[i][j]);}}maxx=Math.max(dp[i][j],maxx);}}return maxx;}}

72. 编辑距离

与上一题几乎一致,看一下代码即可

import java.util.*;import static java.util.Collections.reverse;public class Main {public static void main(String[] args) {minDistance("abcde","ace");}public static int minDistance(String word1, String word2) {int len1 = word1.length(), len2 = word2.length();int[][] dp = new int[len1 + 1][len2 + 1];for (int i = 0; i < len1; i++)dp[i + 1][0] = i + 1;for (int i = 0; i < len2; i++)dp[0][i + 1] = i + 1;for (int i = 0; i < len1; i++) {for (int j = 0; j < len2; j++) {dp[i + 1][j + 1] = word1.charAt(i) == word2.charAt(j) ? dp[i][j]: Math.min(Math.min(dp[i][j + 1], dp[i + 1][j]), dp[i][j]) + 1;}}return dp[len1][len2];}}

相关文章:

  • 基于vue框架的独居老人上门护理小程序的设计r322q(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • 前端面试核心考点全解析
  • 华为OD机试真题——告警抑制(2025A卷:100分)Java/python/JavaScript/C/C++/GO最佳实现
  • .NET 开源工业视觉系统 OpenIVS 快速搭建自动化检测平台
  • ST-GCN
  • 表单请求为什么需要进行 URL 编码?—详解application/x-www-form-urlencoded的正确用法
  • 自动化立体仓库堆垛机SRM控制系统FC19手动控制功能块开发
  • 制造业的未来图景:超自动化与劳动力转型的双重革命
  • 数据结构(7)树-二叉树-堆
  • <el-date-picker>组件传参时,选中时间和传参偏差8小时
  • 用户界面禁忌——基础原则
  • 如何在Qt中绘制一个带有动画的弧形进度条?
  • Vue3 + Element Plus 实现树形结构的“单选 + 只选叶子节点 + 默认选中第一个子节点”
  • [低代码表单生成器设计基础]ElementUI中Layout布局属性Form表单属性详解
  • el-table-column如何获取行数据的值
  • 【QT】理解QT的“元对象系统”
  • 企业文件乱、传输慢?用群晖 NAS 构建安全高效的共享系统
  • 【机器学习基础】机器学习入门核心算法:集成学习(Ensemble Learning)
  • Hive自定义函数案例(UDF、UDAF、UDTF)
  • 系统提示词:Google Stitch
  • b2c网站模板下载/好项目推荐平台
  • 一般通过什么意思/网站优化包括对什么优化
  • 设计页面宽度/郑州seo代理外包
  • 宜兴网站建设价格信息/合肥seo优化
  • 网站建设教程突/桂平网络推广
  • wordpress花园主题/东莞百度seo电话