第一题 我的办法比较笨 希望大佬们能指点一二 /* 1.给定无序整数数组,其构成方式如下: 首先给出1到n这n个连续不重复的数,随机移除其中一个数,再随机将剩下的数中的一个数重复一次,最后打乱当前得到的数组。 请找出这两个数。 输入:3 5 6 5 4 1(构成方式:n=6,初始数组1 2 3 4 5 6,移除2,重复5,打乱得3 5 6 5 4 1) 输出 2 5*/  /*我的想法是;用容器(vi)存储输入的内容,根据输入的长度(vi.size())建立一个二维数组arr[vi.size()][2] 用于存放数据和每个数据出现 的频率,频率是两个数组比较而得的(while循环), 最后输出频率为0和2的两个数*/   #include<cstdio> #include<iostream> #include<vector> using namespace std; int main(){ vector<int> vi; int count=0; //输入无序数组 int a; while(scanf("%d",&a)!=EOF){ vi.push_back(a); }    //建立初始化二维数组 count=vi.size(); int arr[count][2]={{0,0}}; for(int i=count-1;i>=0;i--){ arr[i][0]=i+1; } //比较两个数组 vector<int>::iterator it=vi.begin(); while(it<vi.end()){ for(int j=0;j<count;j++){ if(*it==arr[j][0]){ arr[j][1]++; }  } it++; } for(int k=0;k<count;k++){//输出删除掉的 和重复的  if(arr[k][1]==0||arr[k][1]==2) printf("%d ",arr[k][0]); } return 0; }
image.png