gpt4 book ai didi

c++ - 最小和子 vector 算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:50:48 25 4
gpt4 key购买 nike

编程珍珠第8栏发现的问题如下:

给定实 vector x[n],计算在任何连续子 vector 中找到的最大和。

最终提供的解决方案复杂度为O(n)如下:

std::vector<int> x;
int max_so_far = 0;
int max_here = 0;
for (std::size_t i = 0; i < x.size(); ++i)
{
max_here = std::max(max_here + x[i], 0);
max_so_far = std::max(max_so_far, max_here);
}

我想知道如何修改上述算法以提供最小和

最佳答案

只需要将x中每个元素的符号取反,然后运行算法即可:

std::vector<int> x;
int max_so_far = 0;
int max_here = 0;

for (std::size_t i = 0; i < x.size(); ++i) x[i] = -x[i];

for (std::size_t i = 0; i < x.size(); ++i)
{
max_here = std::max(max_here + x[i], 0);
max_so_far = std::max(max_so_far, max_here);
}

int min_so_far = -max_so_far;

关于c++ - 最小和子 vector 算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4927903/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com