1131. Maximum of Absolute Value Expression--Medium

本文介绍了一种高效算法,用于解决两个等长整数数组间的最大绝对值表达式问题。通过巧妙转换,将问题简化为寻找四个不同形式的最大差值,并详细展示了算法的具体实现过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

1.思考

2.实现
Runtime: 36ms(94.42%)
Memory: 12.3MB(100%)

/*
|arr1[i]-arr1[j]|+|arr2[i]-arr2[j]|+|i-j|
= (arr1[i]+arr2[j]+i)-(arr1[j]+arr2[j]+j)
= (arr1[i]+arr2[j]-i)-(arr1[j]+arr2[j]-j)
= (arr1[i]-arr2[j]+i)-(arr1[j]-arr2[j]+j)
= (arr1[i]-arr2[j]-i)-(arr1[j]-arr2[j]-j)
*/

class Solution {
public:
    int maxAbsValExpr(vector<int>& arr1, vector<int>& arr2) {
        int len = arr1.size();
        vector<int> a1(len),a2(len),a3(len),a4(len);
        
        for(int i=0; i<len; i++){
            a1[i] = arr1[i]+arr2[i]+i;
            a2[i] = arr1[i]+arr2[i]-i;
            a3[i] = arr1[i]-arr2[i]+i;
            a4[i] = arr1[i]-arr2[i]-i;
        }
        
        vector<int> res(4);
        res[0] = *max_element(a1.begin(), a1.end()) - *min_element(a1.begin(), a1.end());
        res[1] = *max_element(a2.begin(), a2.end()) - *min_element(a2.begin(), a2.end());
        res[2] = *max_element(a3.begin(), a3.end()) - *min_element(a3.begin(), a3.end());
        res[3] = *max_element(a4.begin(), a4.end()) - *min_element(a4.begin(), a4.end());
        
        int r = *max_element(res.begin(), res.end());
        return r;
    }
};

转载于:https://www.cnblogs.com/xuyy-isee/p/11238805.html

资源下载链接为: https://pan.quark.cn/s/9648a1f24758 这个HTML文件是一个专门设计的网页,适合在告白或纪念日这样的特殊时刻送给女朋友,给她带来惊喜。它通过HTML技术,将普通文字转化为富有情感和创意的表达方式,让数字媒体也能传递深情。HTML(HyperText Markup Language)是构建网页的基础语言,通过标签描述网页结构和内容,让浏览器正确展示页面。在这个特效网页中,开发者可能使用了HTML5的新特性,比如音频、视频、Canvas画布或WebGL图形,来提升视觉效果和交互体验。 原本这个文件可能是基于ASP.NET技术构建的,其扩展名是“.aspx”。ASP.NET是微软开发的一个服务器端Web应用程序框架,支持多种编程语言(如C#或VB.NET)来编写动态网页。但为了在本地直接运行,不依赖服务器,开发者将其转换为纯静态的HTML格式,只需浏览器即可打开查看。 在使用这个HTML特效页时,建议使用Internet Explorer(IE)浏览器,因为一些老的或特定的网页特效可能只在IE上表现正常,尤其是那些依赖ActiveX控件或IE特有功能的页面。不过,由于IE逐渐被淘汰,现代网页可能不再对其进行优化,因此在其他现代浏览器上运行可能会出现问题。 压缩包内的文件“yangyisen0713-7561403-biaobai(html版本)_1598430618”是经过压缩的HTML文件,可能包含图片、CSS样式表和JavaScript脚本等资源。用户需要先解压,然后在浏览器中打开HTML文件,就能看到预设的告白或纪念日特效。 这个项目展示了HTML作为动态和互动内容载体的强大能力,也提醒我们,尽管技术在进步,但有时复古的方式(如使用IE浏览器)仍能唤起怀旧之情。在准备类似的个性化礼物时,掌握基本的HTML和网页制作技巧非常
<think>嗯,用户这次是想深入了解yarn.scheduler.capacity.maximum-am-resource-percent参数的配置指南。这个参数其实很关键,直接关系到集群中ApplicationMaster资源的分配策略。用户可能正在规划集群资源分配,或者遇到了AM资源不足的问题。从ta引用capacity调度器相关文档的举动来看,应该是个有一定YARN管理经验的管理员,需要具体的生产环境指导而非基础概念解释。这个参数控制的是整个集群或特定队列中可用于AM的最大资源比例。需要重点解释清楚几点:第一是计算公式,要用数学公式展示AM资源池上限的计算逻辑;第二是典型场景,比如小文件作业和高并发作业的不同设置策略;第三是队列级配置的继承关系。考虑到用户之前关注过vcore配置,可能需要特别说明AM的vcore分配机制。内存和CPU资源的双重限制容易引发配置冲突,这点要着重强调。Cloudera的推荐值范围是个很好的参考点,但也要说明具体环境需要调整。安全风险提示不能少,特别是高并发场景下AM资源争用可能导致的任务提交失败。建议在文档里用加粗标出测试验证步骤,用户直接能拿去用。参数优化应该结合监控数据,这点可以放在最佳实践部分。最后生成的相关问题要往资源分配失败分析方向引导,因为用户似乎特别关注资源上限的影响。</think> ### `yarn.scheduler.capacity.maximum-am-resource-percent` 配置指南 该参数用于限制集群或队列中 **ApplicationMaster(AM)可使用的最大资源比例**,避免AM资源过度占用影响任务容器分配。以下是完整设置指南: --- #### 1. **核心作用与计算公式** - **定义**:限制AM总资源占集群/队列资源的百分比上限,例如: - **全局配置**:`yarn.scheduler.capacity.maximum-am-resource-percent` - **队列级配置**:`yarn.scheduler.capacity.<queue-path>.maximum-am-resource-percent` - **资源公式**: $$ \text{AM\_资源上限} = \text{集群总资源} \times \text{maximum-am-resource-percent} $$ - **默认值**:`0.1`(即10%的集群资源)[^1] - **触发限制**:当AM申请新资源时,若当前AM总资源 $\geq$ 阈值,新提交作业会被阻塞[^1]. --- #### 2. **生产环境推荐值** | **场景** | **推荐值** | **说明** | |-------------------------|------------|-----------------------------------------------| | 常规计算集群 | 10%–15% | 兼顾AM与任务容器资源(默认可用)[^1] | | 高并发小作业集群(如Spark Streaming) | 15%–20% | 需支持更多AM实例 | | 队列间隔离场景 | 分层设置 | 核心队列设15%,实验队列设8% | | **注意事项** | | 超过20%可能挤压任务容器资源,导致作业卡顿[^1] | --- #### 3. **配置示例** **全局配置 (`yarn-site.xml`)**: ```xml <property> <name>yarn.scheduler.capacity.maximum-am-resource-percent</name> <value>0.15</value> <!-- 15%全局AM资源上限 --> </property> ``` **队列级配置 (`capacity-scheduler.xml`)**: ```xml <!-- root.production队列上限12% --> <property> <name>yarn.scheduler.capacity.root.production.maximum-am-resource-percent</name> <value>0.12</value> </property> <!-- root.experimental队列上限8% --> <property> <name>yarn.scheduler.capacity.root.experimental.maximum-am-resource-percent</name> <value>0.08</value> </property> ``` > ⚠️ **继承规则**: > 子队列未配置时继承父队列值,但子队列值 **不可超过父队列限制**[^1]. --- #### 4. **最佳实践** 1. **资源类型适配**: - 若使用 `DominantResourceCalculator`[^2],比例同时作用于 **内存+CPU**: ```bash # 示例:集群总资源=1TB内存 + 1000vcores # AM资源上限=150GB内存 + 150vcores(当maximum-am-resource-percent=0.15) ``` - `DefaultResourceCalculator`[^2] 则仅计算内存 2. **监控调整**: ```bash # 查看AM资源使用率 yarn queue -stats root.production ``` - **关键指标**:`AM_Resource_Usage%` >80% 时需上调阈值 - **告警阈值**:AM资源等待队列长度持续增长 3. **与关联参数协同**: - **AM容器大小**:与 `yarn.app.mapreduce.am.resource.mb/vcores` 联动 $$ \text{最大AM数量} = \frac{\text{集群资源} \times \text{maximum-am-resource-percent}}{\text{单个AM资源需求}} $$ - **队列容量**:确保 `maximum-am-resource-percent` $\leq$ `yarn.scheduler.capacity.<queue>.capacity` --- #### 5. **常见问题与解决** | **问题现象** | **解决方案** | |----------------------------|----------------------------------| | 作业提交阻塞,AM等待超时 | 调高目标队列的maximum-am-resource-percent(但不超过25%) | | 队列AM资源占比过高 | 检查是否需优化AM资源申请参数(如减小AM容器内存) | | 父队列资源未充分利用 | 确保子队列的maximum-am-resource-percent总和 $\leq$ 父队列值 | ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值