2020-02-11 12:01:21

问题描述:

问题求解:

本题的难度个人感觉还是蛮大的,主要是不容易想到O(n)的解。

对于 ...a, [b, ... , c], d, ...,如果我们将其中的[b, ... , c]进行翻转。

如果两线段有重复,必减小原先的值。

如果两线段无重复,必增加原先的值,且diff为2 * gap。

可通过如下的图进行分类讨论。

最后,再对边界做一个处理即可。

int inf = (int)1e9;
public int maxValueAfterReverse(int[] nums) {
int res = 0;
int n = nums.length;
int diff = 0;
for (int i = 0; i < n - 1; i++) res += Math.abs(nums[i + 1] - nums[i]); // 端点不在两顶点
int min = inf;
int max = -inf;
for (int i = 0; i <= n - 2; i++) {
min = Math.min(min, Math.max(nums[i], nums[i + 1]));
max = Math.max(max, Math.min(nums[i], nums[i + 1]));
}
diff = Math.max(diff, 2 * (max - min)); // 一端点在左顶点
for (int i = 1; i <= n - 2; i++) {
diff = Math.max(diff, Math.abs(nums[i + 1] - nums[0]) - Math.abs(nums[i + 1] - nums[i]));
} // 一端点在右顶点
for (int i = 1; i <= n - 2; i++) {
diff = Math.max(diff, Math.abs(nums[i - 1] - nums[n - 1]) - Math.abs(nums[i - 1] - nums[i]));
} return res + diff;
}

  

数学-绝对值-Reverse Subarray To Maximize Array Value的更多相关文章

  1. Reverse Subarray To Maximize Array Value

    2020-02-03 20:43:46 问题描述: 问题求解: public boolean canTransform(String start, String end) { int n = star ...

  2. LeetCode之“数学”:Reverse Integer && Reverse Bits

    1. Reverse Integer 题目链接 题目要求: Reverse digits of an integer. Example1: x = 123, return 321 Example2:  ...

  3. Get the largest sum of contiguous subarray in an int array

    When I finished reading this problem,I thought I could solve it by scanning every single subarray in ...

  4. [array] leetcode - 53. Maximum Subarray - Easy

    leetcode - 53. Maximum Subarray - Easy descrition Find the contiguous subarray within an array (cont ...

  5. 152. Maximum Product Subarray (Array; DP)

    Find the contiguous subarray within an array (containing at least one number) which has the largest ...

  6. 53. Maximum Subarray (Array; DP)

    Find the contiguous subarray within an array (containing at least one number) which has the largest ...

  7. js常用API 数据类型 基本类型,基本包装类型,引用类型 Object String Array Boolean Number Date Math

    数据类型 变量.作用域及内存 基础类型(primitive value):Undefined.Null.Boolean.Number和String.这些类型在内存中分别占用固定大小的空间,他们的值保存 ...

  8. array题目合集

    414. Third Maximum Number 给一个非空的整数数组,找到这个数组中第三大的值,如果不存在,那么返回最大的值.要求时间复杂度为o(n) 例如: Example 1: Input: ...

  9. leetcode-Maximum Subarray

    https://leetcode.com/problems/maximum-subarray/ Find the contiguous subarray within an array (contai ...

随机推荐

  1. 以后的IT路还很长(1)

    以后的IT路还很长(1) 最近有两位兄弟同事离职了,蛮可惜了,在一个战壕一起一.两年了,人各有志嘛!希望他们发展更好些! 目前的公司是个创业型的公司,公司从08年的50来个人,扩张到今年11年400多 ...

  2. Introduction Of Gradient Descent

    不是一个机器学习算法 是一种基于搜索的优化方法 作用:最小化一个损失函数 梯度上升法:最大化一个效用函数 import matplotlib.pyplot as plt import numpy as ...

  3. IPFS初窥

    虽然区块链有很多令人兴奋的特性,但是也有其固有的缺点.比如,文件或者长度较长的文本信息就不适合存储在链上.那么如何解决这个缺点呢?一个解决方案就是IPFS(Interplanetary File Sy ...

  4. HTML标签学习总结(2)

    点我:HTLM标签学习总结(1) 11. 在网页制作过程过中,可以把一些独立的逻辑部分划分出来,放在一个<div>标签中,这个<div>标签的作用就相当于一个容器. 语法: & ...

  5. 我为什么要用CSDN博客?

    在今年的二月份,因老师说由于学习需要,我怀着抵触的情绪开通了之前闻所未闻的CSDN博客. 三月六号我发了第一篇原创文章,说实话感觉没什么意思,只是在完成老师留给的任务.接下来的几周一直按着老师的要求不 ...

  6. GDB调试系列之了解GDB

    想要熟练利用GDB进行程序调试,首先要了解什么是GDB. 1. 什么是GDB GDB (the GNU Project Debugger) 是一个可以运行在大多数常见的UNIX架构.Windows.M ...

  7. SDWebImage -- 封装 (网络状态检测,是否打开手机网络下下载高清图设置)

    对SDWebImage 进行封装,为了更好的节省用户手机流量,并保证在移动网络下也展示高清图,对使用SDWebImage 下载图片之前进行逻辑处理,根据本地缓存中是否有缓存原始的图片,用户是否打开移动 ...

  8. 下载cv2时下载失败或下载成功却无法使用怎么办

    最近我也在安装cv2的时候遇到了奇怪的问题,导致在安装cv2的时候无法使用.我在网上查了各种资料,虽然都对的,但都不太全面.本文就把安装cv2时可能遇到的各种奇怪的问题的解决方案做一个总结,供大家参考 ...

  9. MVC04

    1. 从页面到action 讲述controller与View之间的具体运作关系 在上次添加的名为Movie的Model内添加 下面我们尝试为该model内的属性添加attribute 具体修改如下: ...

  10. git add的各种情况分类

    ·  git add -A  提交所有变化 ·  git add -u  提交被修改(modified)和被删除(deleted)文件,不包括新文件(new) ·  git add .  提交新文件( ...