Ratiorg为他的生日从CodeMaster获得了不同大小的雕像作为礼物,每个雕像都有一个非负整数。由于他喜欢把事情做得很完美,所以他希望将它们从最小到最大排列,这样每个雕像都会比前一个雕像精确地大1个。他可能需要一些额外的雕像来完成它。帮助他找出所需的最少额外雕像数量。
实施例
对于statues = [6,2,3,8],输出应为 makeArrayConsecutive2(statues)= 3。
这是codefights的一个问题。 这是我的代码,如下所示
#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;
}
当我用向量c的这个特定值运行代码时,它输出误解值。所有其他情况都运行正确,但是当我声明10维向量(我的意思是具有10个值的向量)时,它不能正常工作.Could你能解释一下这个问题是什么吗?
答案 0 :(得分:1)
在$_SESSION['role'] = $user['database-role-column-name'];
周期for
的最后一次迭代将超出界限,导致未定义的行为。您需要在statues[i+1]
循环之前添加statuses
不为空的检查,然后迭代到for
。