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

力扣面试150题--三角形最小路径和 最小路径和 不同路径 最长回文子串

Day 98

题目描述

在这里插入图片描述

思路

在这里插入图片描述

class Solution {public int minimumTotal(List<List<Integer>> triangle) {if(triangle.size()==1){return triangle.get(0).get(0);}int[]dp1=new int[triangle.get(triangle.size()-1).size()];int[]dp2=new int[triangle.get(triangle.size()-1).size()];dp1[0]=triangle.get(0).get(0);for (int i=1;i<triangle.size();i++){for (int j = 0; j < triangle.get(i).size(); j++) {if(j==0){dp2[j]=dp1[j]+triangle.get(i).get(j);}else if(j==triangle.get(i).size()-1){dp2[j]=dp1[j-1]+triangle.get(i).get(j);dp1[j-1]=dp2[j-1];dp1[j]=dp2[j];}else{int a,b;a=dp1[j]+triangle.get(i).get(j);b=dp1[j-1]+triangle.get(i).get(j);dp2[j]=Math.min(a,b);dp1[j-1]=dp2[j-1];}}}int min=1000000;for (int i=0;i<triangle.get(triangle.size()-1).size();i++){if(dp2[i]<min){min=dp2[i];}}return min;}
}

题目描述

在这里插入图片描述

思路

在这里插入图片描述

class Solution {public int minPathSum(int[][] grid) {int m=grid.length;int n=grid[0].length;if(m==1 && n==1){return grid[0][0];}if(n>1){for(int i=1;i<n;i++){grid[0][i]+=grid[0][i-1];}}if(m>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.min(grid[i][j]+grid[i-1][j],grid[i][j-1]+grid[i][j]);}}return grid[m-1][n-1];}
}

题目描述

在这里插入图片描述

思路

在这里插入图片描述

class Solution {public int uniquePathsWithObstacles(int[][] obstacleGrid) {//初始化 将障碍改成-1for (int i = 0; i < obstacleGrid.length; i++) {for (int j = 0; j < obstacleGrid[i].length; j++) {if (obstacleGrid[i][j] == 1) {obstacleGrid[i][j] = -1;}}}int count = 1;for (int i = 0; i < obstacleGrid.length; i++) {if (obstacleGrid[i][0] == -1) {count=-1;}obstacleGrid[i][0] = count;}count=1;for (int i = 0; i < obstacleGrid[0].length; i++) {if (obstacleGrid[0][i] == -1) {count=-1;}obstacleGrid[0][i] = count;}//计算for (int i = 1; i < obstacleGrid.length; i++) {for (int j = 1; j < obstacleGrid[i].length; j++) {if (obstacleGrid[i][j] == -1) {continue;}int a,b;a=obstacleGrid[i-1][j];b=obstacleGrid[i][j-1];if(a!=-1&&b!=-1){obstacleGrid[i][j]=a+b;}if (a==-1&&b!=-1){obstacleGrid[i][j]=b;}if (a!=-1&&b==-1){obstacleGrid[i][j]=a;}if(a==-1&&b==-1){obstacleGrid[i][j]=-1;}}}if(obstacleGrid[obstacleGrid.length-1][obstacleGrid[0].length-1]==-1){obstacleGrid[obstacleGrid.length-1][obstacleGrid[0].length-1]=0;}return obstacleGrid[obstacleGrid.length-1][obstacleGrid[0].length-1];}
}

题目描述

在这里插入图片描述

思路

dp思路
在这里插入图片描述

class Solution {public String longestPalindrome(String s) {int n = s.length();// 处理空字符串或单字符的情况if (n < 2) {return s;}// dp[i][j] 表示 s[i..j] 是否为回文子串boolean[][] dp = new boolean[n][n];int maxLen = 1;  // 最长回文子串的长度int start = 0;   // 最长回文子串的起始索引// 初始化:单个字符都是回文子串for (int i = 0; i < n; i++) {dp[i][i] = true;}// 遍历所有可能的子串,按子串长度从小到大处理// j 表示子串的右端点for (int j = 1; j < n; j++) {// i 表示子串的左端点,i < jfor (int i = 0; i < j; i++) {// 两端字符不相等,一定不是回文if (s.charAt(i) != s.charAt(j)) {dp[i][j] = false;} else {// 两端字符相等的情况// 如果子串长度 <= 2(j - i <= 1),一定是回文// 否则取决于中间子串 s[i+1..j-1] 是否为回文if (j - i <= 1) {dp[i][j] = true;} else {dp[i][j] = dp[i + 1][j - 1];}}// 更新最长回文子串的信息if (dp[i][j] && (j - i + 1) > maxLen) {maxLen = j - i + 1;start = i;}}}return s.substring(start, start + maxLen);
}
}
http://www.lryc.cn/news/620090.html

相关文章:

  • RagFlow启动源码说明
  • 前后端分离项目在云服务器的部署
  • 【系统安装】虚拟机中安装win10企业版系统记录
  • CSS保持元素宽高比,固定元素宽高比
  • 用 mock 把 ES 单元测试@elastic/elasticsearch-mock 上手
  • Python 环境隔离实战:venv、virtualenv 与 conda 的差异与最佳实践
  • 变分自编码器VAE的Pytorch实现
  • day39_2025-08-13
  • Go 微服务限流与熔断最佳实践:滑动窗口、令牌桶与自适应阈值
  • Day19 C 语言标准 IO 机制
  • React useMemo 深度指南:原理、误区、实战与 2025 最佳实践
  • React常见的Hooks
  • 万字详解C++11列表初始化与移动语义
  • OpenCV的实际应用
  • 类和对象----中
  • 【COMSOL】Comsol学习案例时的心得记录分享
  • Mysql数据库迁移到GaussDB注意事项
  • pycharm配置连接服务器
  • 3.Cursor提效应用场景实战
  • MySQL相关概念和易错知识点(6)(视图、用户管理)
  • 大厂语音合成成本深度对比:微软 / 阿里 / 腾讯 / 火山 API 计费拆解与技术选型指南
  • trace分析之查找点击事件
  • cisco无线WLC flexconnect配置
  • python类--python011
  • 数仓建模理论-数据域和主题域
  • 8.13服务器安全检测技术和防御技术
  • 免费生成视频,Coze扣子工作流完全免费的视频生成方案,实现图生视频、文生视频
  • [ Mybatis 多表关联查询 ] resultMap
  • LeetCode Day5 -- 二叉树
  • 使用 HTML5 Canvas 打造炫酷的数字时钟动画