题目如下:

Given two arrays of integers with equal lengths, return the maximum value of:

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

where the maximum is taken over all 0 <= i, j < arr1.length.

Example 1:

Input: arr1 = [1,2,3,4], arr2 = [-1,4,5,6]
Output: 13

Example 2:

Input: arr1 = [1,-2,-5,0,10], arr2 = [0,-2,-1,-7,-4]
Output: 20

Constraints:

  • 2 <= arr1.length == arr2.length <= 40000
  • -10^6 <= arr1[i], arr2[i] <= 10^6

解题思路:对于表达式 |arr1[i] - arr1[j]| + |arr2[i] - arr2[j]| + |i - j|,在i < j的情况下,这个表达式的值是下面其中四个之一:

(arr1[i] + arr2[i] - i) -  (arr1[j] + arr2[j] - j)

(arr1[i] - arr2[i] - i)   -    (arr1[j] - arr2[j] - j)

(arr2[i] - arr1[i] - i)   -    (arr2[j] - arr1[j] - j)

(arr2[i] + arr1[i] + i)   -    (arr2[j] + arr1[j] + j)

所以只要遍历一次数组,求出四个表达式中差值的最大值和最小值即可。

代码如下:

class Solution(object):
def maxAbsValExpr(self, arr1, arr2):
"""
:type arr1: List[int]
:type arr2: List[int]
:rtype: int
"""
case_1_max = case_2_max = case_3_max = case_4_max = -float('inf')
case_1_min = case_2_min = case_3_min = case_4_min = float('inf')
for i in range(len(arr1)):
case_1_max = max(case_1_max,arr1[i] + arr2[i] - i)
case_1_min = min(case_1_min, arr1[i] + arr2[i] - i) case_2_max = max(case_2_max, arr1[i] - arr2[i] - i)
case_2_min = min(case_2_min, arr1[i] - arr2[i] - i) case_3_max = max(case_3_max, arr2[i] - arr1[i] - i)
case_3_min = min(case_3_min, arr2[i] - arr1[i] - i) case_4_max = max(case_4_max, arr2[i] + arr1[i] + i)
case_4_min = min(case_4_min, arr2[i] + arr1[i] + i) return max(case_1_max - case_1_min,case_2_max - case_2_min,case_3_max - case_3_min,case_4_max - case_4_min)

最新文章

  1. js类数组
  2. JavaScript学习笔记之Object
  3. 背水一战 Windows 10 (12) - 绘图: Shape, Path
  4. java自定义注解实现前后台参数校验
  5. 使用Nito.AsyncEx实现异步锁
  6. 为学Linux 我看了这些书
  7. D - Charm Bracelet 背包问题
  8. IE下背景图片 不显示问题
  9. Tensorflow ——神经网络
  10. 六月计划#1A(6.1-6.8)
  11. RMAN备份之丢失数据文件及控制文件的恢复
  12. [SOJ]1753 解码
  13. MySQL显示状态信息
  14. mysql大小写敏感(默认为1,不敏感)
  15. 使用jconsole监控JVM内存
  16. ios --xib自定义,解决在导航栏不透明的情况下,自定义xib view高度被压缩64的问题
  17. jenkins 多选参数构建配置
  18. format格式化函数
  19. msp430学习笔记-实现开方log等计算及FFT算法(待续)
  20. 【Jmeter】Linux(Mac)上使用最新版本Jmeter(5.0)做性能测试

热门文章

  1. MyEclipse中的查找快捷键
  2. java创建多线程实现并行计算任务处理
  3. CentOS7编译安装sshpass过程
  4. Windows Server 2012 上安装 dotNET Framework v3.5
  5. promise和async/await的用法
  6. Debian/Ubuntu下安装Apache的Mod_Rewrite模块的步骤分享
  7. django项目学习之异步框架celery
  8. 输入某年某月某日,判断这一天是这一年的第几天?(可以用 Python 标准 库)
  9. linux基本命令之磁盘管理命令(ls,cd,pwd,mkdir,rmdir,clear, touch)
  10. 常用css相关笔记