【发布时间】:2021-01-20 23:59:58
【问题描述】:
class Solution {
public:
int maximumProduct(vector<int>& nums) {
int n = nums.size();
vector<long long int> left_max(n,0);
vector<long long int> right_max(n,0);
vector<long long int> left_min(n,0);
vector<long long int> right_min(n,0);
left_min[0]=nums[0];
left_max[0]=nums[0];
cout<<max(1,5); //this line is working
for(int i=1;i<nums.size();i++){
left_min[i]=min(left_min[i-1],nums[i]); // why this line is throwing error
left_max[i]=max(left_max[i-1],nums[i]);
}
right_min[n-1] = nums[n-1];
right_max[n-1] = nums[n-1];
for(int i=n-2;i>=0;i++){
right_min[i]=min(nums[i],right_min[i+1]);
right_max[i]=max(nums[i],right_max[i+1]);
}
for(int i=0;i<n;i++){
cout<<right_min[i]<<" ";
}
return 1;
}
};
上面我已经评论了两行,第一行显示错误,另一行没有?谁能解释一下?
以下错误信息:
Line 16: Char 25: error: no matching function for call to 'min'
left_min[i]=min(left_min[i-1],nums[i]); // why this line is throwing error
^~~
/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/algorithmfwd.h:383:5: note: candidate template ignored: deduced conflicting types for parameter '_Tp' ('long long' vs. 'int')
min(const _Tp&, const _Tp&);
^
/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_algo.h:3450:5: note: candidate template ignored: could not match 'initializer_list<type-parameter-0-0>' against 'long long'
min(initializer_list<_Tp> __l, _Compare __comp)
^
/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_algo.h:3444:5: note: candidate function template not viable: requires single argument '__l', but 2 arguments were provided
min(initializer_list<_Tp> __l)
^
/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/algorithmfwd.h:388:5: note: candidate function template not viable: requires 3 arguments, but 2 were provided
min(const _Tp&, const _Tp&, _Compare);
^
【问题讨论】:
-
错误可能在未显示的代码中。请提供完整的工作代码。
-
你遇到了什么错误?
-
在询问有关构建错误的问题时,总是包括错误的完整和完整的复制粘贴(作为文本)。请花点时间刷新the help pages,取SOtour,阅读How to Ask,以及this question checklist。
-
在您的第二个循环中,
i仅在向量大小为 1 或以下时达到零,因为它从n - 2开始并越来越高,但它甚至无法达到整数过载,因为 UB由索引超出范围(很可能是段错误)导致的发生时间要早得多。
标签: c++ error-handling min