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

leetcode 624. 数组列表中的最大距离

题目如下
在这里插入图片描述
数据范围
在这里插入图片描述

这道题又是贪心算法 想得到最大距离第一时间就能想到用最大值减去最小值。
现有两个数组
[1,2,3,4,5,6,7]
[2,3,4,5,6,7,8]
这两个数组的最大距离为7,其中左端为1 右端为8。(现简称左端为l 右端为r)
若加入第三个数组现在思考l和r移动的方向:(只考虑使得(r - l)增大的情况)
1.l向左移动 r不变
2.l不变 r向右移动
3.l向左移动 r向右移动(与题设矛盾排除)
比较1,2情况下l - r与原来l - r的大小
究其根本就是在增加数组的过程改变了最小值和最大值(相对的最大值和最小值因为真正的最大值和最小值可能在同一个数组内部不一定会考虑 所以得到的是局部的最优解)
这个时候我们能得到当n=3时l - r的最大值。而这个解也是n = 3的最优解。
以此类推 当n = m(m是正整数)时只要一直新增数组移动l r最终就能得到全局最优解。

通过代码

class Solution {
public:
int maxDistance(vector<vector<int>>& arrays) {
        int min1 = arrays[0][0],max1 = arrays[0].back();
        int ans = -1;

        for(int i = 1;i < arrays.size();i++) {
            ans = max(max(abs(arrays[i].back() - min1),abs(arrays[i][0] - max1)),ans);
            max1 = max(arrays[i].back(),max1);
            min1 = min(arrays[i][0],min1);

        }
    return ans;

}
};

在这里插入图片描述


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

相关文章:

  • 【机器学习】穷理至极,观微知著:微积分的哲思之旅与算法之道
  • MySQL叶子节点为啥使用双向链表?不使用单向呢?
  • 如何使用 Ansys OptiSlang 同时运行多个参数化设计研究
  • 深入理解 Java 接口的回调机制
  • 数据挖掘——朴素贝叶斯分类
  • 《learn_the_architecture_-_aarch64_exception_model》学习笔记
  • 机器人对物体重定向操作的发展简述
  • 无人机+无人车+无人船:海空地协同解决方案技术详解
  • Mac Android Studio 提升Mac的编译速度
  • 如何使用Python调用淘宝api接口获取商品详情信息?
  • 腾讯 HunyuanVideo 上线,自定义文本生成视频
  • Python(四)——SVG 图坐标轴数字和其他文本设置总结
  • Mac设置默认打开程序
  • 学生心理咨询评估系统(源码+数据库+文档)
  • 【LC】191. 位1的个数
  • Python Notes 1 - introduction with the OpenAI API Development
  • PyTorch快速入门教程【小土堆】之完整模型训练套路
  • gin集成Swagger
  • DjangoORM字段参数、常用字段类型及参数、模型和表单验证器详解
  • 三格电子新品上市——IEC103 转 ModbusTCP 网关
  • Redis - 7 ( 11000 字 Redis 入门级教程 )
  • springBoot集成netty中登录鉴权、在pieline消息传递
  • df.groupby(pd.Grouper(level=1)).sum()
  • 解决 `pnpm install` 出现 `ERR_PNPM_ENOENT` 错误的方法
  • 【前端】掌握 JavaScript Map:从入门到精通
  • “善弈者”也需妙手,Oclean欧可林:差异化不是说说而已