amazonse
saber137
采纳率0%
2021-03-07 10:42

给定非空的int类型数组,数组中的元素只有一个出现一次,其余都出现两次,找出这个唯一元素。

给定非空的int类型数组,数组中的元素只有一个出现一次,其余都出现两次,找出这个唯一元素。

不知道为什么会发生下面这个错误?

Runtime Error:[ERROR] A Not allowed system call: runid:410352 callid:13

辅助解释:
A Not allowed system call: runid:410352 :使用了系统禁止的操作系统调用,看看是否越权访问了文件或进程等资源

#include <iostream>
using namespace std;

int search(int arr[], int len)
{
    for (int i = 0; i < len; i++)
    {
        int num = 0;
        for (int j = 0; j < len; j++)
        {
            if (arr[i] == arr[j])
            {
                num++;
            }
        }
        if (num == 1)
        {
            return i;
        }
    }
}

int main()
{
    int arr[1000];
    int len ;
    cin >> len;
    for (int i = 0; i < len; i++)
    {
        cin >> arr[i];
    }
    int num = search(arr, len);
    cout << arr[num] << endl;

    system("pause");
    return 0;
}

 

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

2条回答

  • A_box_of_yogurt A_box_of_yogurt 1月前
    #include <iostream>
    using namespace std;
    int main() {
    	int len, in, ans = 0;
    	cin >> len;
    	while(len--) {
    		cin >> in;
    		ans ^= in;
    	}
    	cout << ans;
    	return 0;
    }

    根据^异或运算符的特性(归零律, 恒等律, 交换律, 结合律, 自反, 两个相同的数进行异或操作会变成零, 零异或任何数就是被异或的那个数, 就算两个异或的数中间有别的数, 最后这两个数还是会被抵消掉)如果不懂异或, 可以去百度 https://baike.baidu.com/item/%E5%BC%82%E6%88%96/10993677?fr=aladdin, 本题不用开数组.

    你的代码没有错, 是因为评测环境不支持system调用, 去掉system("pause");这一行即可.

    望采纳

    点赞 评论 复制链接分享
  • huapeng_guo 百鸣 1月前

    很久没有写过c++代码了,这种基本功能实现固然占分,其次还要考虑时间复杂度,发生错误的代码行是否这里“  int len ;
        cin >> len;” 建议单步调试看看,

    search函数看上去没有多大问题

    点赞 评论 复制链接分享

为你推荐