我必须找到数组列表中是否出现元素。
如果是,请计算不同数量的元素,并从n
中减去它,这是数组的总大小。
我的问题。 经过几个案例后,我注意到,最后一个索引的值都没有被读取。 例如
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
// your code goes here
int test;
cin>>test;
for(int i=0;i<test;i++) {
int n;
cin>>n;
vector<int> ar(n);
for(int j=1;j<=n;j++) {
cin>>ar[j];
}
int c=0;
for(int j=1;j<=n;j++) {
if(binary_search(ar.begin(),ar.end(),j)) {
c++;
}
}
cout<<n-c<<endl;
}
return 0;
}
测试用例
1
3
0 1 2
答案应为1
我们发现1和2,c=0+2=2
暗示cout<<n-c<<endl;
= 3-2=1
根据此代码回答,结果为2
无法找到问题所在。
答案 0 :(得分:0)
您的代码中似乎有一个错误:
在第15行
$sql = "
SELECT *,(max_seats - taken_seats ) as free_seats
FROM trips
WHERE departure = :departure
AND destination = :destination
AND taken_seats < max_seats
";
for(int j=1; j<=n; j++)
从0变为n-1,而不是1到n。因此,您编写的最后一个值将具有未定义的行为。
在你的情况下,你得到第一个元素的垃圾值,在我的情况下,它只是崩溃了。
解决问题,结果是预期的1。