问题描述
我写在 C++ 函数下面,它循环遍历一个整数向量。每次通过时,它都会从所有数字中减去最小的数字。它应该在每次传递时返回非零元素的数量(这存储在向量结果中并返回)。但是,每当我尝试运行时,我都会收到“std::bad_alloc”。删除“flag=true”行后错误消失。我需要它才能工作,以便 while 循环中断。帮我解决这个问题。
vector<int> cutTheSticks(vector<int> arr) {
int flag=true,min,count;
vector<int> result;
while(flag)
{
min = arr[0];
flag = false;
count = 0;
for(int i=1; i<arr.size(); i++)
{
if(arr[i]<min)
{
min=arr[i];
}
}
for(int i=0; i<arr.size(); i++)
{
if(arr[i]!=0)
{
count++;
flag = true;
}
arr[i] = arr[i]-min;
}
result.push_back(count);
}
return result;
}
解决方法
考虑输入 dict
。
最小值为 0,因此您从每个元素中减去 0(什么都不做)。由于第二个元素是 1(不是 0),因此您设置了 [0,1]
。
除了您推回 flag = true
向量之外,此循环中没有任何变化。因此循环将重复直到 result
耗尽内存(或超过其 vector
)。