这个简单的代码有问题。问题可能出在使用向量类:
int solution(vector<int> &A) {
// write your code in C++14 (g++ 6.2.0)
vector<int> left, right;
int cnt=0,k,j;
if (A.size()==1) return 0;
if (A.size()==2 && A[0]==A[1]) return 1;
if (A.size()==2 && A[0]!=A[1]) return 0;
if (A.size()==3 && A[0]==A[1] && A[1]==A[2]) return 2;
if (A.size()==3 && A[0]==A[1] && A[1]!=A[2]) return 0;
for (size_t i=0; i<(A.size()-1); ++i)
{
left.assign( A.begin(), A.begin() + i );
right.assign( A.begin() + i + 1, A.end());
sort(left.begin(), right.end());
sort(right.begin(), right.end());
j=left.size()/2;
k=right.size()/2;
if (left[j]==right[k])
{
cnt++;
}
}
return cnt;
}
执行后返回:
stderr:
Segmentation Fault
答案 0 :(得分:0)
left[j]
是因为i==0
是left.size()
,则{p> i
是越界的,所以0
。
与right[k]
类似。
此外,不会考虑大小写A.size() == 0
,并且会包裹A.size()-1
。
sort(left.begin(), right.end())
中还有一个错字:right.end()
应该是left.end()
。