Redian新闻
>
求这道题的O(N)解 (转载)
avatar
求这道题的O(N)解 (转载)# JobHunting - 待字闺中
h*j
1
【 以下文字转载自 Programming 讨论区 】
发信人: hpj (江湖), 信区: Programming
标 题: 求这道题的O(N)解
发信站: BBS 未名空间站 (Sun Dec 10 23:54:45 2017, 美东)
A: array of N integer, N (1, 100K), A[i] (-10M, 10M)
for two index P,Q
0<=P<=Qfind the maximum(A[P]+A[Q]+Q-P) among all PQ pairs
avatar
g*g
2
So easy.
Two arrays:
C: max{1..i} A[j] + j
D: max{i..N} A[j] - j
max {C_i+D_i}

【在 h*j 的大作中提到】
: 【 以下文字转载自 Programming 讨论区 】
: 发信人: hpj (江湖), 信区: Programming
: 标 题: 求这道题的O(N)解
: 发信站: BBS 未名空间站 (Sun Dec 10 23:54:45 2017, 美东)
: A: array of N integer, N (1, 100K), A[i] (-10M, 10M)
: for two index P,Q
: 0<=P<=Q: find the maximum(A[P]+A[Q]+Q-P) among all PQ pairs

avatar
d*l
3
Max(A[i]+i+max(A[j]-j)) for j<=I
avatar
z*t
4
记录两个变量
v1 :max(A[x] - x) for any x visited
v2 : max(A[x] + A[y] + y - x) for any x,y visited where y > x
for循环更新v1和v2。
for (int i = 0; i < A.size(); i++)
{
v2 = max(v2, v1 + A[i] + i);
v1 = max(v1, A[i] - i);
}
return v2;
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。