如何解决最大子数组 - 返回容器
我正在尝试实现返回子数组的 Kadane 算法版本。而不是仅仅返回最大的金额,我想获得容器。 基于 wiki 伪代码,我准备了简单的实现。 但是,我想避免使用索引best_start 和best_end。 我找不到使用 push_back 逐步填充 out 向量的方法。
你能给我建议我应该如何改变这个程序的逻辑吗?
std::vector<int> maxSubArrayWiki(const std::vector<int>& nums) {
std::vector<int> out;
int max_sum = INT_MIN;
int sum = 0;
int i = 0;
int current_start,best_start,best_end = 0;
for(const auto& n : nums){
if(sum <= 0) {
current_start = i;
out = {};
sum = n;
}
else {
sum += n;
}
if(sum > max_sum) {
max_sum = sum;
best_start = current_start;
out.push_back(n);
best_end = i + 1;
}
i++;
}
// is it possible to avoid following? return std::vector<int>(&nums[best_start],&nums[best_end]);
return out;
}
out:
4 2 1
expected:
4 -1 2 1
http://coliru.stacked-crooked.com/a/8d120f8f0ab923a6
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。