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);
    }
}
相关推荐
葫芦和十三14 分钟前
图解 MongoDB 17|大集合与工作集:数据超过内存怎么办
后端·mongodb·面试
葫芦和十三8 小时前
图解 MongoDB 18|复制集拓扑:Primary、Secondary 和 Arbiter 的分工
后端·mongodb·面试
葫芦和十三14 小时前
图解 MongoDB 15|journal 与持久化:写入怎么不丢,崩溃怎么恢复
后端·mongodb·面试
葫芦和十三14 小时前
图解 MongoDB 16|压缩:snappy、zstd 和 zlib 的取舍
后端·mongodb·面试
labixiong18 小时前
实现一个能跑的迷你版Promise(一)
前端·javascript·面试
weedsfly1 天前
还在用 Axios?你可能需要重新理解 XHR 与 Fetch
前端·javascript·面试
Hyyy1 天前
什么是bun?和pnpm有什么区别
前端·面试·bun
葫芦和十三1 天前
图解 MongoDB 14|Cache 与淘汰:WiredTiger 的内存治理
后端·mongodb·面试
PBitW2 天前
GPT训练我的第二天,我表示不过如此!!!😕😕😕
前端·javascript·面试
kyriewen2 天前
白宫直接给 OpenAI 下了限制令,GPT-5.6 不能随便放出来了
前端·javascript·面试