描述:数组长度为n,数据范围为1到n
解法1:
先排序
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
int n;
cin>>n;
int temp;
vector<int>nums;
for(int i=0;i<n;i++)
{
cin>>temp;
nums.push_back(temp);
}
sort(nums.begin(),nums.end());
for(int i=0;i<n;i++)
{
if(nums[i]==i+1)
;
else
{
cout<<nums[i]<<endl;
break;
}
}
return 0;
}
方法2:
交换法
#include <iostream>
#include <vector>
using namespace std;
void swap(int &a,int &b)
{
int temp;
temp=b;
b=a;
a=temp;
}
int main()
{
int n;
cin>>n;
int temp;
vector<int>nums;
for(int i=0;i<n;i++)
{
cin>>temp;
nums.push_back(temp);
}
for(int i=0;i<n;)
{
if(nums[i]==i)
i++;
else
{
if(nums[i]==nums[nums[i]])
{
cout<<nums[i];
break;
}
else
swap(nums[i],nums[nums[i]]);
}
}
}