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);
    }
}
相关推荐
代码小库18 小时前
免费制作简历 + 免费简历押题
面试
Aphasia31118 小时前
手写KeepAlive组件
前端·react.js·面试
牛客企业服务19 小时前
2026人才选拔新基准:AI能力考核如何重构企业招聘竞争力?
面试·ai面试·ai能力·ai coding·ai能力考核
这料鬼有毒19 小时前
二刷hot100-78.子集
算法·leetcode·职场和发展
Raink老师19 小时前
【AI面试临阵磨枪-94】Skill 安全:注入、越权、数据泄露、恶意代码、沙箱?
数据库·安全·面试
zzz_236821 小时前
【Spring】面试突击系列(三):Spring Web MVC 深度解析
前端·spring·面试
li星野1 天前
FAISS 详解:原理、使用与面试指南——向量检索的基石
面试·职场和发展·faiss
mifengxing1 天前
LeetCode热题100——字母异位词分组
java·算法·leetcode·职场和发展·哈希表·hot100
zzz_23681 天前
【Spring】面试突击系列(一):IoC 与 DI 深度解析
java·spring·面试
I Promise341 天前
智驾APA_HPA可行驶区域检测算法工程师面试问题整理可参考
算法·面试·职场和发展