c++ - codility:我的代码中的 EquiLeader Segmentation Fault 问题
问题描述
我对这个简单的代码有疑问。问题可能在于使用矢量类:
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
解决方案
left[j]
越界 if i==0
because left.size()
is i
, so 0
. 类似的right[k]
。
也A.size() == 0
没有考虑这种情况,将环绕A.size()-1
。
还有一个错字sort(left.begin(), right.end())
:right.end()
应该是left.end()
。
推荐阅读
- oracle - oracle 程序中的问号未执行
- google-bigquery - bigquery 中的任何和所有 SQL 运算符
- post - Chilkat HTTPS 将纯 HTTP 请求发送到 HTTPS 端口
- sql-server - 如何在 Azure 数据工厂中创建视图
- c# - Azure Key Vault 环境变量
- reactjs - 如何获得选定的颜色
- c++ - 如何从 qml 访问 qabstractlistmodel 派生类对象作为另一个类的属性?
- php - 如何根据命令实时强制重定向用户?
- mongodb - 如何更新 mobgo db 中的集合
- android - WebView 仅适用于模拟器,不适用于设备