day110(3.11)——leetcode面试经典150

63. 不同路径 II

63. 不同路径Ⅱ

题目:

题解:

java 复制代码
class Solution {
    public int uniquePathsWithObstacles(int[][] obstacleGrid) {
        int m = obstacleGrid.length;
        int n = obstacleGrid[0].length;
        if(m==0&&n==0) {
            return 0;
        }
        if(obstacleGrid[0][0]==1) {
            return 0;
        }
        int[][] dp = new int[m][n];
        dp[0][0]=1;
        for(int i=0;i<m;i++) {
            for(int j=0;j<n;j++) {
                if(obstacleGrid[i][j]==1) {
                    continue;
                }
                else if(i==0&&j==0) {
                    continue;
                }
                else if(i==0) {
                    dp[i][j]=dp[i][j-1];
                }
                else if(j==0) {
                    dp[i][j]=dp[i-1][j];
                }
                else {
                    dp[i][j]=dp[i-1][j]+dp[i][j-1];
                }
            }
        }
        return dp[m-1][n-1];
    }
}

5. 最长回文子串

5. 最长回文子串

题目:

题解:

java 复制代码
class Solution {
    public String longestPalindrome(String s) {
        if(s==null || s.length()==0) {
            return "";
        }
        char[] chars = s.toCharArray();
        //记录最大的范围
        int maxStart = 0;
        int maxLen = 0;
        //当前的信息
        int left = 0;
        int right = 0;
        int len=0;
        for(int i=0;i<chars.length;i++) {
            left = i-1;
            right = i+1;
            len = 1;
            while(left>=0&&chars[left]==chars[i]) {
                left--;
                len++;
            }
            while(right<chars.length&&chars[right]==chars[i]) {
                right++;
                len++;
            }
            while(left>=0&&right<chars.length&&chars[right]==chars[left]) {
                left--;
                right++;
                len+=2;
            }
            if(len>maxLen) {
                maxLen=len;
                maxStart=left;
            }
        }
        return s.substring(maxStart+1, maxStart+maxLen+1);
    }
}

优化版:

java 复制代码
class Solution {
    public String longestPalindrome(String s) {
        if(s==null || s.length()==0) {
            return "";
        }
        //用来记录dp[l][r]之间是否为回文子串
        boolean[][] dp = new boolean[s.length()][s.length()];
        //最大的回文长度
        int maxLen = 1;
        //最大的回文子串的start
        int maxStart = 0;
        char[] chars = s.toCharArray();
        for(int i=1;i<chars.length;i++) {
            for(int j=0;j<i;j++) {
                if(chars[i]==chars[j]&&(i-j<=2||dp[j+1][i-1])) {
                   dp[i][j]=true;
                    if(i-j+1>maxLen) {
                        maxLen=i-j+1;
                        maxStart=j;
                    }
                }
            }
        } 
        return s.substring(maxStart, maxStart+maxLen);
    }
}
相关推荐
Alice-YUE11 小时前
工业级 AI Agent 架构:5 层、2 范式、4 原则,一次讲透
面试·系统架构·大模型·ai agent·智能体
TrebleZ14 小时前
为什么总爱问Java中怎么判断两个对象是相同的
面试
怕浪猫19 小时前
构建你自己的 AI Agent 发行版:从 Profile 定制到生产部署全流程
前端·后端·面试
yuanxi20019 小时前
圣湘生物的三重转变:用PSS⁵价值力看懂从卖单品到卖经营价值
职场和发展·创业创新·学习方法
weixin_4352081621 小时前
【大模型面试宝典】开源啦!!!
人工智能·职场和发展·agent·deepseek
未秃头的程序猿21 小时前
全链路追踪落地一年:从翻日志到秒级定位,我们都做了什么
java·后端·面试
SamDeepThinking21 小时前
new Thread()之后发生了什么?
java·后端·面试
晚安日记wanna21 小时前
Vue3 script setup 的四层追问答到第三层才算过关
前端·vue.js·面试
晚安日记wanna1 天前
一条 SMEMBERS 干瘫 Redis 节点:单线程的真正边界在哪
redis·后端·面试
Moment1 天前
为什么越来越多开发者开始用 PostgreSQL?
前端·后端·面试