C++ 大小为10的向量的测试用例失败
Ratiorg从CodeMaster那里得到了不同大小的雕像作为生日礼物,每个雕像都有一个非负整数大小。因为他喜欢把东西做得完美,所以他想把它们从最小的到最大的排列,这样每尊雕像都会比前一尊雕像大1倍。他可能需要一些额外的雕像才能做到这一点。帮助他计算出所需的额外雕像的最小数量 范例 对于status=[6,2,3,8],输出应该是 makeArrayConsecutive2(雕像)=3 这是一个来自代码战的问题。 下面是我写的代码C++ 大小为10的向量的测试用例失败,c++,sorting,c++11,vector,stdvector,C++,Sorting,C++11,Vector,Stdvector,Ratiorg从CodeMaster那里得到了不同大小的雕像作为生日礼物,每个雕像都有一个非负整数大小。因为他喜欢把东西做得完美,所以他想把它们从最小的到最大的排列,这样每尊雕像都会比前一尊雕像大1倍。他可能需要一些额外的雕像才能做到这一点。帮助他计算出所需的额外雕像的最小数量 范例 对于status=[6,2,3,8],输出应该是 makeArrayConsecutive2(雕像)=3 这是一个来自代码战的问题。 下面是我写的代码 #include <iostream> #incl
#include <iostream>
#include <vector>
#include<algorithm>
using std::vector;
int makeArrayConsecutive2(std::vector <int> statues) {
vector<int>::size_type size = statues.size();
sort( statues.begin(), statues.end() );
int counter = 0;
for( int i = 0; i<size; i++ )
{
int dif = statues[i+1] - statues[i] - 1;
if( dif >= 1 ) {counter+=dif;}
}
return counter;
}
int main()
{
vector<int> c = {1,2,3,4,5,6,7,8,9,10};
std :: cout<<"You need "<<makeArrayConsecutive2(c)<<" statues"<<std::endl;
return 0;
}
#包括
#包括
#包括
使用std::vector;
int makeArrayConsecutive2(标准::向量状态){
vector::size_type size=status.size();
排序(status.begin()、status.end());
int计数器=0;
对于(inti=0;i=1){counter+=dif;}
}
返回计数器;
}
int main()
{
向量c={1,2,3,4,5,6,7,8,9,10};
std::cout关于
周期状态[i+1]的最后一次迭代
将超出范围,导致未定义的行为。您需要在for
循环之前添加检查,确保状态
不为空,然后迭代直到大小-1
…您如何混淆维度和值?是否尝试过调试它?(提示:定义\u GLIBCXX\u DEBUG
,当您在大多数情况下误用STL组件时,程序将向您发出警告。)太好了,您不必使用命名空间std
。非常感谢