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

Leetcode Hot100 76-80

细节:

递推公式:
增:dp[i] = dp[i-1][j]+1
删:dp[i] = dp[i][j-1]+1
改:dp[i] = dp[i-1][j-1]+1

class Solution {
    public int minDistance(String word1, String word2) {
        int m = word1.length();
        int n = word2.length();
        if(m==0)return n;
        if(n==0)return m;
        int dp[][] = new int[m+1][n+1];
        for (int i = 0; i <= m; i++) {
            dp[i][0] = i;
        }
        for (int j = 0; j <= n; j++) {
            dp[0][j] = j;
        }
        for (int i = 1; i <= m; i++) {
            for (int j = 1; j <= n; j++) {
                if(word1.charAt(i-1)==word2.charAt(j-1)){
                    dp[i][j] = dp[i-1][j-1];
                }
                else{
                    dp[i][j] = Math.min(dp[i-1][j]+1,Math.min(dp[i][j-1]+1,dp[i-1][j-1]+1));
                }
            }
        }
        return dp[m][n];
    }
}

思想:每次在上次能跳到的范围内选择一个能跳的最远的位置作为下次的起跳点

需要边界和最大值两个变量

public int jump(int[] nums) {
        int maxright = 0;//最大可达位置
        int bianjie = 0;//边界
        int times = 0;
        for (int i = 0; i < nums.length - 1; i++) {
            //记录该轮能到达的最长位置
            maxright = Math.max(maxright,nums[i]+i);
            //若到达边界,则需要跳下一次,该位置为maxright
            if(i==bianjie){
                bianjie = maxright;
                times++;
            }
        }
        return times;
    }

记录每个字母的最远距离,如果这一串单词的最远距离都在一个right内,就把它加入到list种

class Solution {
    public List<Integer> partitionLabels(String s) {
        int index[] = new int[27];
        //会自动记录字母最远距离
        for (int i = 0; i < s.length(); i++) {
            index[s.charAt(i)-'a'] = i;
        }
        List<Integer> list = new LinkedList<>();
        int left = 0;
        int right = 0;
        for (int i = 0; i < s.length(); i++) {
            right = Math.max(right,index[s.charAt(i)-'a']);
            if(i==right){
                list.add(right-left+1);
                left = right+1;
                right = left;
            }
        }
        return list;
    }
}


http://www.kler.cn/a/539347.html

相关文章:

  • NO.11十六届蓝桥杯备战|if-else语句|嵌套if|悬空else|练习4道(C++)
  • ASP.NET Core JWT Version
  • 在请求时打印出实际代理的目标地址
  • CANoe工具使用技巧 --- 如何使用 “on ethernetPacket “事件处理程序
  • 如何参与开源项目
  • sqli-labs靶场实录(二): Advanced Injections
  • 【算法-动态规划】、子序列累加和必须被7整除的最大累加和
  • 机器学习 网络安全 GitHub 机器人网络安全
  • 工业 4G 路由器助力消防领域,守卫生命安全防线
  • ASP.NET Core SignalR的分布式部署
  • 【Uniapp-Vue3】UniCloud云数据库获取指定字段的数据
  • 【蓝桥杯嵌入式】8_IIC通信-eeprom读写
  • 【Android开发AI实战】选择目标跟踪基于opencv实现——运动跟踪
  • 硬盘会莫名增加大量视频和游戏的原因
  • MoMask:可将文本描述作为输入并生成相应的高质量人体运动动作
  • 三种Excel文本连接方法!
  • C#Halcon窗体鼠标交互生成菜单
  • Android网络优化之-HTTPDNS
  • PHP-trim
  • 2025_2_9 C语言中队列
  • Docker 部署 RabbitMQ | 自带延时队列
  • leetcode 做题思路快查
  • Docker 部署 Grafana 教程
  • LeetCode-二叉树展开为链表
  • 【实用技能】如何借助3D文档控件Aspose.3D, 在Java中无缝制作 3D 球体
  • Maven入门核心知识点总结