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

【贪心 || 动态规划】最长对数链

题目

题目

方法一(推荐):贪心算法

思路: 贪心算法的代码并不难写,关键是难想,下面介绍,本题如何贪心及为什么可以贪心

  1. 就数对中第二个数进行排序 然后遍历排好序数组,判断 是否满足题意
    (满足跟随关系,当且仅当 b < c 时,数对(c, d) 才可以跟在 (a, b) 后面)
  2. 满足题意,结果count++, 并且跟新临时变量temp为满足题意的数对第二个元素。

为什么可以贪心
按数对第二个元素排序后,可以保证每步都是缓慢增加的 ,若第二个元素较大的排在前面,则一定会有可行结果被丢弃,因此可以贪心

在这里插入图片描述

代码

		Arrays.sort(pairs, (a , b) -> a[1] - b[1]);
        int temp = pairs[0][1];
        int ans = 1;
        for(int i=1; i<pairs.length; i++){
            if(pairs[i][0] > temp){
                ans++;
                temp = pairs[i][1];
            }
        }
        return ans;

方法二(可能超时 不推荐):动态规划

动态规划法思想:pairs按数对中第一个元素排序,定义一数组 dp[len],存储第i 个元素具有的最长满足题意数对长度, 每次循环, 遍历前 i 个元素, 找到第j 个数对中第二个数小于第 i 个数对中的第一个数, 更新 dp[i]Math.max(dp[i], dp[j]+1)

 		int len = pairs.length;
        int dp[] = new int[len];
        Arrays.sort(pairs, (a, b) -> (a[0] - b[0]));
        Arrays.fill(dp, 1);
   
        for(int i=0; i<len; i++){
            for(int j=0; j<i; j++){
                if(pairs[i][0] > pairs[j][1]){
                    dp[i] = Math.max(dp[i], dp[j]+1);
                }
            }
        }
        return dp[len - 1];

相关文章:

  • Java-基础语法
  • java医药配送服务系统ssm447
  • golang设计模式——创建模式
  • Java8中的函数式接口(你知道几个?)
  • JavaScript-jQuery
  • 十分钟学会动态路由
  • Docker高级-2.DockerFile与微服务打包案例
  • Django--ORM 常用字段及属性介绍
  • y122.第七章 服务网格与治理-Istio从入门到精通 -- 流量治理实战进阶(八)
  • 【Mysql】Mysql视图、触发器、存储过程、游标
  • 0902(045天 集合框架09 总结点 问)
  • 算法学习-贪心问题(持续更新中)
  • SpringBoot+Shiro+JWT实现授权
  • 与归并排序相关的一些问题
  • 【C语言拓展】缓冲区、结构体大小计算、命令行参数
  • hexo+github搭建个人博客
  • 77. Combinations
  • Laravel Mix运行时关于es2015报错解决方案
  • node入门
  • PaddlePaddle-GitHub的正确打开姿势
  • puppeteer stop redirect 的正确姿势及 net::ERR_FAILED 的解决
  • Redis提升并发能力 | 从0开始构建SpringCloud微服务(2)
  • Spring Boot MyBatis配置多种数据库
  • WebSocket使用
  • 对JS继承的一点思考
  • 工作中总结前端开发流程--vue项目
  • 官方解决所有 npm 全局安装权限问题
  • 基于Mobx的多页面小程序的全局共享状态管理实践
  • 聊聊directory traversal attack
  • 如何学习JavaEE,项目又该如何做?
  • 如何邀请好友注册您的网站(模拟百度网盘)
  • 思考 CSS 架构
  • 王永庆:技术创新改变教育未来
  • 微信小程序--------语音识别(前端自己也能玩)
  • 小程序开发之路(一)
  • 学习HTTP相关知识笔记
  • 大数据全解:定义、价值及挑战
  • ​软考-高级-信息系统项目管理师教程 第四版【第14章-项目沟通管理-思维导图】​
  • #QT项目实战(天气预报)
  • (2022 CVPR) Unbiased Teacher v2
  • (42)STM32——LCD显示屏实验笔记
  • (附源码)ssm跨平台教学系统 毕业设计 280843
  • (七)理解angular中的module和injector,即依赖注入
  • (转)IOS中获取各种文件的目录路径的方法
  • (转)winform之ListView
  • (转)创业家杂志:UCWEB天使第一步
  • (转)详解PHP处理密码的几种方式
  • (转载)利用webkit抓取动态网页和链接
  • (转载)微软数据挖掘算法:Microsoft 时序算法(5)
  • (自适应手机端)响应式新闻博客知识类pbootcms网站模板 自媒体运营博客网站源码下载
  • .net 4.0 A potentially dangerous Request.Form value was detected from the client 的解决方案
  • .net core 6 集成和使用 mongodb
  • .Net Core webapi RestFul 统一接口数据返回格式
  • .so文件(linux系统)
  • @angular/cli项目构建--http(2)