LeetCode 1131. 绝对值表达式的最大值(数学 绝对值展开)

文章目录

    • 1. 题目
    • 2. 解题

1. 题目

给你两个长度相等的整数数组,返回下面表达式的最大值

|arr1[i] - arr1[j]| + |arr2[i] - arr2[j]| + |i - j|

其中下标 i,j 满足 0 <= i, j < arr1.length

示例 1:
输入:arr1 = [1,2,3,4], arr2 = [-1,4,5,6]
输出:13示例 2:
输入:arr1 = [1,-2,-5,0,10], arr2 = [0,-2,-1,-7,-4]
输出:20提示:
2 <= arr1.length == arr2.length <= 40000
-10^6 <= arr1[i], arr2[i] <= 10^6

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/maximum-of-absolute-value-expression
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

只有这8种可能
arr1[i]−arr1[j]+arr2[i]−arr2[j]+i−j;−arr1[i]+arr1[j]−arr2[i]+arr2[j]−i+j;−arr1[i]+arr1[j]+arr2[i]−arr2[j]+i−j;arr1[i]−arr1[j]−arr2[i]+arr2[j]+i−j;arr1[i]−arr1[j]+arr2[i]−arr2[j]−i+j;−arr1[i]+arr1[j]−arr2[i]+arr2[j]+i−j;arr1[i]−arr1[j]−arr2[i]+arr2[j]−i+j;−arr1[i]+arr1[j]+arr2[i]−arr2[j]−i+j;arr1[i] - arr1[j] + arr2[i] - arr2[j] + i - j;\\ -arr1[i] + arr1[j] - arr2[i] + arr2[j] - i + j;\\ -arr1[i] + arr1[j] + arr2[i] - arr2[j] + i - j;\\ arr1[i] - arr1[j] - arr2[i] + arr2[j] + i - j;\\ arr1[i] - arr1[j] + arr2[i] - arr2[j] - i + j;\\ -arr1[i] + arr1[j] - arr2[i] + arr2[j] + i - j;\\ arr1[i] - arr1[j] - arr2[i] + arr2[j] - i + j;\\ -arr1[i] + arr1[j] + arr2[i] - arr2[j] - i + j;arr1[i]arr1[j]+arr2[i]arr2[j]+ij;arr1[i]+arr1[j]arr2[i]+arr2[j]i+j;arr1[i]+arr1[j]+arr2[i]arr2[j]+ij;arr1[i]arr1[j]arr2[i]+arr2[j]+ij;arr1[i]arr1[j]+arr2[i]arr2[j]i+j;arr1[i]+arr1[j]arr2[i]+arr2[j]+ij;arr1[i]arr1[j]arr2[i]+arr2[j]i+j;arr1[i]+arr1[j]+arr2[i]arr2[j]i+j;

把 j 拿走
arr1[i]+arr2[i]+i;−arr1[i]−arr2[i]−i;−arr1[i]+arr2[i]+i;arr1[i]−arr2[i]+i;arr1[i]+arr2[i]−i;−arr1[i]−arr2[i]+i;arr1[i]−arr2[i]−i;−arr1[i]+arr2[i]−i;arr1[i] + arr2[i] + i;\\ -arr1[i] - arr2[i] - i;\\ -arr1[i] + arr2[i] + i;\\ arr1[i] - arr2[i] + i;\\ arr1[i] + arr2[i] - i;\\ -arr1[i] - arr2[i] + i;\\ arr1[i] - arr2[i] - i;\\ -arr1[i] + arr2[i] - i;\\ arr1[i]+arr2[i]+i;arr1[i]arr2[i]i;arr1[i]+arr2[i]+i;arr1[i]arr2[i]+i;arr1[i]+arr2[i]i;arr1[i]arr2[i]+i;arr1[i]arr2[i]i;arr1[i]+arr2[i]i;
发现只有4种情况
arr1[i]+arr2[i]+iasA;−arr1[i]−arr2[i]−ias−A;−arr1[i]+arr2[i]+iasB;arr1[i]−arr2[i]+iasC;arr1[i]+arr2[i]−iasD;−arr1[i]−arr2[i]+ias−D;arr1[i]−arr2[i]−ias−B;−arr1[i]+arr2[i]−ias−C;arr1[i] + arr2[i] + i \quad as A;\\ -arr1[i] - arr2[i] - i \quad as -A;\\ -arr1[i] + arr2[i] + i \quad as B;\\ arr1[i] - arr2[i] + i \quad as C;\\ arr1[i] + arr2[i] - i \quad as D;\\ -arr1[i] - arr2[i] + i \quad as -D;\\ arr1[i] - arr2[i] - i \quad as -B;\\ -arr1[i] + arr2[i] - i \quad as -C; arr1[i]+arr2[i]+iasA;arr1[i]arr2[i]iasA;arr1[i]+arr2[i]+iasB;arr1[i]arr2[i]+iasC;arr1[i]+arr2[i]iasD;arr1[i]arr2[i]+iasD;arr1[i]arr2[i]iasB;arr1[i]+arr2[i]iasC;
只需要取出ABCD,求其最大最小值,做差

class Solution {
public:int maxAbsValExpr(vector<int>& arr1, vector<int>& arr2) {int min1 = INT_MAX, min2 = INT_MAX, min3 = INT_MAX, min4 = INT_MAX;int max1 = INT_MIN, max2 = INT_MIN, max3 = INT_MIN, max4 = INT_MIN;for(int i = 0; i < arr1.size(); ++i){max1 = max(max1, arr1[i] + arr2[i] + i);max2 = max(max2,-arr1[i] + arr2[i] + i);max3 = max(max3, arr1[i] - arr2[i] + i);max4 = max(max4, arr1[i] + arr2[i] - i);min1 = min(min1, arr1[i] + arr2[i] + i);min2 = min(min2,-arr1[i] + arr2[i] + i);min3 = min(min3, arr1[i] - arr2[i] + i);min4 = min(min4, arr1[i] + arr2[i] - i);}return max(max(max1-min1, max2-min2),max(max3-min3, max4-min4));}
};

100 ms 23.2 MB


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
Michael阿明

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/474251.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于uCOSII的LCD驱动实验

实验目的 掌握在 UCOsH操作系统下编写应用程序 的基本方法 实验内容 在移植好的UCOsII项 目中添加串口、LCD、 键盘的驱动程序 学习在UCOSII下 ,多应用任务的简单编程实例 实验设备 EL-RAM-860教 学 实验 箱 ,PentiumII以上 的 PC机 ,仿 真 调试 电缆 ,串 口直 连 电 缆 。 PC操…

LeetCode 659. 分割数组为连续子序列(哈希)

文章目录1. 题目2. 解题1. 题目 给你一个按升序排序的整数数组 num&#xff08;可能包含重复数字&#xff09;&#xff0c;请你将它们分割成一个或多个子序列&#xff0c;其中每个子序列都由连续整数组成且长度至少为 3 。 如果可以完成上述分割&#xff0c;则返回 true &…

autotools入门笔记(二)——创建和使用静态库、动态库

带有静态库或者动态库的工程的构建过程与上一节&#xff08;&#xff09;只包含一个源文件的工程的构建过程是类似的。只是对于复杂的工程&#xff0c;如果包含多个还有源文件的目录时&#xff0c;需要对每个包含源文件的目录执行构建过程&#xff0c;另外创建和使用库文件时需…

LeetCode 1520. 最多的不重叠子字符串(贪心)

文章目录1. 题目2. 解题1. 题目 给你一个只包含小写字母的字符串 s &#xff0c;你需要找到 s 中最多数目的非空子字符串&#xff0c;满足如下条件&#xff1a; 这些字符串之间互不重叠&#xff0c;也就是说对于任意两个子字符串 s[i…j] 和 s[k…l] &#xff0c;要么 j <…

LeetCode 679. 24 点游戏(回溯)

文章目录1. 题目2. 解题1. 题目 你有 4 张写有 1 到 9 数字的牌。你需要判断是否能通过 *&#xff0c;/&#xff0c;&#xff0c;-&#xff0c;(&#xff0c;) 的运算得到 24。 示例 1: 输入: [4, 1, 8, 7] 输出: True 解释: (8-4) * (7-1) 24示例 2: 输入: [1, 2, 1, 2] 输…

LeetCode 第 33 场双周赛(511/3304,前15.5%,第4次全部通过)

文章目录1. 比赛结果2. 题目1. LeetCode 5479. 千位分隔数 easy2. LeetCode 5480. 可以到达所有点的最少点数目 medium3. LeetCode 5481. 得到目标数组的最少函数调用次数 medium4. LeetCode 5482. 二维网格图中探测环 hard1. 比赛结果 题目比较简单&#xff0c;全部做出来了。…

Apache Commons IO: 简化文件和IO操作

第1章&#xff1a;引言 咱们在做Java编程的时候&#xff0c;经常会遇到各种文件操作和输入输出&#xff08;IO&#xff09;的问题。不论是读取一个配置文件&#xff0c;还是把数据写入日志&#xff0c;这些看似简单的任务有时候会让人头疼。传统的Java IO操作&#xff0c;虽然…

LeetCode 1560. 圆形赛道上经过次数最多的扇区

文章目录1. 题目2. 解题2.1 模拟2.2 脑筋急转弯1. 题目 给你一个整数 n 和一个整数数组 rounds 。有一条圆形赛道由 n 个扇区组成&#xff0c;扇区编号从 1 到 n 。 现将在这条赛道上举办一场马拉松比赛&#xff0c;该马拉松全程由 m 个阶段组成。其中&#xff0c;第 i 个阶段…

如何用jar命令对java工程进行打包

如何用jar命令对java工程进行打包有时候为了更方便快捷的部署和执行Java程序&#xff0c;要把java应用程序打包成一个jar包。而这个基础的操作有时候也很麻烦&#xff0c;为了方便java程序员们能够方便的打包java应用程序&#xff0c;下面对jar命令进行介绍&#xff0c;并举出几…

Android 行程APP简单介绍

登录模块 数据库设计如图所示创建了如上的数据库由于没有注册功能人为添加了两个用户&#xff1a; 数据库创建语句&#xff1a; public static final String CREATE_task "create table user (" "id integer primary key autoincrement, ""remenber…

LeetCode 1561. 你可以获得的最大硬币数目

文章目录1. 题目2. 解题1. 题目 有 3n 堆数目不一的硬币&#xff0c;你和你的朋友们打算按以下方式分硬币&#xff1a; 每一轮中&#xff0c;你将会选出 任意 3 堆硬币&#xff08;不一定连续&#xff09;。Alice 将会取走硬币数量最多的那一堆。你将会取走硬币数量第二多的那…

微信小程序 地图组件使用

本地图程序利用map组件&#xff0c;以及使用它的markers,polyline属性分别设置地图两个位置的标志以及他们之间的连线&#xff0c;利用腾讯地图的API对两个地点进行查询&#xff0c;动态设置地图的经纬度&#xff0c;以及动态初始化markers,polyline属性。 程序运行截图如下&a…

LeetCode 1562. 查找大小为 M 的最新分组

文章目录1. 题目2. 解题1. 题目 给你一个数组 arr &#xff0c;该数组表示一个从 1 到 n 的数字排列。有一个长度为 n 的二进制字符串&#xff0c;该字符串上的所有位最初都设置为 0 。 在从 1 到 n 的每个步骤 i 中&#xff08;假设二进制字符串和 arr 都是从 1 开始索引的情…

DurOS语音开发

DuerOS语音开发项目&#xff0c;该项目通过搭载DuerOS开发者平台&#xff0c;利用平台开发的一组API规范&#xff0c;实现实时的语音播报功能。 整体流程示意图&#xff1a; 所用设备&#xff1a;树莓派微机系统、arduino与74HC595单片机、地图彩灯控制沙盘、小度语音。 数据流…

LeetCode 1563. 石子游戏 V(DP)

文章目录1. 题目2. 解题2.1 区间DP1. 题目 几块石子 排成一行 &#xff0c;每块石子都有一个关联值&#xff0c;关联值为整数&#xff0c;由数组 stoneValue 给出。 游戏中的每一轮&#xff1a; Alice 会将这行石子分成两个 非空行&#xff08;即&#xff0c;左侧行和右侧行…

个人简历小程序

为了熟练掌握微信小程序开发的一些基本技巧&#xff0c;熟悉微信小程序开发流程&#xff0c;特此&#xff0c;运用所学知识&#xff0c;做了一个个人简历小程序。 效果图如下&#xff1a; 代码如下&#xff1a; ① index.jsconst app getApp() Page({ data: { userInfo: {}…

Android的Fragment介绍

前言 fragment是从android3.0开始提出来的&#xff0c;用来支持大屏幕设备的ui设计。通过将activity划分为多个fragment&#xff0c;不仅提高了设计的灵活性&#xff0c;而且可以在程序运行时改变它们的特征&#xff0c;比如动态的修改&#xff0c;替换已有的fragment等等。 fr…

[Kaggle] Heart Disease Prediction

文章目录1. 数据探索2. 特征处理管道3. 训练模型4. 预测kaggle项目地址1. 数据探索 import pandas as pd train pd.read_csv(./train.csv) test pd.read_csv(./test.csv)train.info() test.info() abs(train.corr()[target]).sort_values(ascendingFalse)<class pandas.c…

01.神经网络和深度学习 W2.神经网络基础

文章目录1. 二分类2. 逻辑回归3. 逻辑回归损失函数4. 梯度下降5. 导数6. 计算图导数计算7. 逻辑回归中的梯度下降8. m个样本的梯度下降9. 向量化10. 向量化的更多例子11. 向量化 logistic 回归12. 向量化 logistic 回归梯度输出13. numpy 广播机制14. 关于 python / numpy 向量…