每日三题-最长回文子串、搜索二维矩阵II、最长递增子序列

简介: 每日三题-最长回文子串、搜索二维矩阵II、最长递增子序列

最长回文子串


88206b297c214df990edf4dd510a5a05.png

解法一

dp

class Solution {
    public String longestPalindrome(String s) {
        char[] c = s.toCharArray();
        int str = s.length();
        boolean dp[][] = new boolean[str][str];
        // dp[i][j] = c[i]==c[j] && dp[i+1][j-1];
        int left = 0; // 左下标
        int right = 0; // 右下表
        int maxlen = 1; //长度  
        for(int i = 0;i < str;i++){
            dp[i][i] = true;
        }
        for(int len = 2;len <= str;len++){//枚举长度
            for(int i = 0;i < str;i++){//枚举起点
                int j = i+len-1; // j 是终点
                if(j >= str){
                    break;
                }
                if(c[i]==c[j] && (dp[i+1][j-1] || j-i ==1 )){
                    dp[i][j] = true;
                    if(j-i+1 > maxlen){
                        maxlen = j-i+1;
                        left = i;
                        right = j;
                    }
                }
            }
        }        
        return s.substring(left,right+1);
    }
}


搜索二维矩阵II


e2f4ab4f73cf42a4b81cafb0c3ea697a.png

class Solution {
    public boolean searchMatrix(int[][] matrix, int target) {
        int m = matrix.length;
        int n = matrix[0].length;
        int i = 0;
        int j = n-1;
        while(i < m && j >= 0){
            if(target == matrix[i][j]){
                return true;
            }else if(target > matrix[i][j]){
                i++;
            }else {
                j--;
            }
        }
        return false;
    }
}


最长递增子序列


60a2ae8226ae4aef92bad20480bb0e3a.png

class Solution {
    public int lengthOfLIS(int[] nums) {
        int len = nums.length;
        int dp[] = new int[len];
        int maxans = 0;
        for(int i = 0;i < len;i++){
            for(int j = 0;j < i;j++){
                if(nums[j]<nums[i]) dp[i] = Math.max(dp[i],dp[j]+1);
            }
            maxans =Math.max(dp[i],maxans);
        }
        return maxans+1;
    }
}
相关文章
|
6月前
【每日一题Day146】给定行和列的和求可行矩阵 | 贪心
【每日一题Day146】给定行和列的和求可行矩阵 | 贪心
48 0
|
5月前
|
存储 算法 数据可视化
深入解析力扣161题:相隔为 1 的编辑距离(逐字符比较与动态规划详解)
深入解析力扣161题:相隔为 1 的编辑距离(逐字符比较与动态规划详解)
|
5月前
|
算法
【经典LeetCode算法题目专栏分类】【第6期】二分查找系列:x的平方根、有效完全平方数、搜索二位矩阵、寻找旋转排序数组最小值
【经典LeetCode算法题目专栏分类】【第6期】二分查找系列:x的平方根、有效完全平方数、搜索二位矩阵、寻找旋转排序数组最小值
|
6月前
|
算法
【Leetcode 74】搜索二维矩阵 —— 二分查找|矩阵
给你一个满足下述两条属性的`m x n`整数矩阵:每行中的整数从左到右按非严格递增顺序排列。每行的第一个整数大于前一行的最后一个整数
|
6月前
|
算法 测试技术 C#
C++前缀和算法:统计美丽子字符串
C++前缀和算法:统计美丽子字符串
|
6月前
|
算法 程序员 索引
【算法训练-动态规划 三】【双序列DP问题】最长重复子数组、最长公共子串、最长公共子序列、编辑距离
【算法训练-动态规划 三】【双序列DP问题】最长重复子数组、最长公共子串、最长公共子序列、编辑距离
103 0
|
机器学习/深度学习 搜索推荐 开发工具
对数据进行模糊匹配搜索(动态规划、最长公共子串、最长公共子序列)
倘若要在一堆数据中对一个关键词进行匹配搜索,传统做法是把数据拆分开,然后遍历他们,看看是否包含这个关键词,对于 “fin” 和 “finish” 这样存在包含关系的单词来说是没问题的,但是对于 “fish” 和 “finish” 这样并不存在包含关系的单词就失效了,这时候期望计算出两个单词的相似性,比如 “fish” 和 “finish” 都包含 “ish”,“ish” 的长度是 3,我们可以理解相似性为 3。目前主流做法是通过最长公共子串来寻找两个或多个已知字符串最长的子串。
134 0
对数据进行模糊匹配搜索(动态规划、最长公共子串、最长公共子序列)
|
机器学习/深度学习 算法 测试技术
LeetCode:搜索二维矩阵题解
请写出一个高效的在m*n矩阵中判断目标值是否存在的算法,矩阵具有如下特征: 每一行的数字都从左到右排序 每一行的第一个数字都比上一行最后一个数字大
125 0
|
算法 C++
每日算法系列【LeetCode 329】矩阵中的最长递增路径
每日算法系列【LeetCode 329】矩阵中的最长递增路径
|
算法
LeetCode 周赛 347(2023/05/28)二维空间上的 LIS 最长递增子序列问题
这场周赛是 LeetCode 第 347 场单周赛,T4 是结合 LIS 最长递增子序列的动态规划问题。
83 0