C++ 为什么在查找数组中最大值的数目时出错
我写了这样的函数 数组包含数字,函数应返回最大值的数目C++ 为什么在查找数组中最大值的数目时出错,c++,function,max,C++,Function,Max,我写了这样的函数 数组包含数字,函数应返回最大值的数目 int birthdayCakeCandles(vector<int> ar) { long arraySize = sizeof(ar) / sizeof(ar[0]); long maxHeight = ar[0]; long number = 0; long i; for (i = 0; i < arraySize; i++) { if (ar[i] >= maxHeight) {
int birthdayCakeCandles(vector<int> ar) {
long arraySize = sizeof(ar) / sizeof(ar[0]);
long maxHeight = ar[0];
long number = 0;
long i;
for (i = 0; i < arraySize; i++) {
if (ar[i] >= maxHeight) {
maxHeight = ar[i];
}
}
for (i = 0; i < arraySize; i++) {
if (ar[i] == maxHeight) {
number++;
}
}
return number;
}
int生日蜡烛(向量ar){
long arraySize=sizeof(ar)/sizeof(ar[0]);
长最大高度=ar[0];
长数=0;
龙我;
对于(i=0;i=最大高度){
最大高度=ar[i];
}
}
对于(i=0;i
这行代码:
long arraySize = sizeof(ar)/sizeof(ar[0]);
不是做你想做的事sizeof
返回对象的大小,而不是容器中的元素数
相反,您可以简单地执行以下操作:
auto arraySize = ar.size();
因为vector
知道它自己的大小,您可以查询它
此外,还有一些算法可以实现您想要的功能,而不是编写原始循环
auto maxHeight = *std::max_element(ar.begin(), ar.end());
auto number = std::count(ar.begin(), ar.end(), maxHeight);
你得到了什么错误?这个问题来自黑客等级,有些测试用例是正确的,有些是错误的。在10个测试用例中,只有3个是正确的,我不知道为什么会发生这种情况,我对编程
sizeof(ar)/sizeof(ar[0])
技巧不起作用,如果ar
是std::vector
。这个技巧只适用于C样式数组——不是指针,而不是C++容器。标准库中有很多算法可以帮助你。例如@IshwarJoshi hackerrank和其他类似的网站不是学习编程语言的好起点。即使您对该语言了解很多,也很难将其视为一个学习平台。ar.size()
返回一个无符号整数类型,即std::vector::size\u type
,这是(通常,但标准不保证)std::size\t
。long
不能(必然)表示返回的值。在C++11及更高版本中,还可以通过执行auto-arraySize=ar.size(),让编译器计算出正确的类型代码>@Peter好点,编辑答案,谢谢。(我假设OP至少可以访问c++11)。