寻找数组中的任意一个重复数并输出

描述:数组长度为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]]);
		}
	}
	
}



猜你喜欢

转载自blog.csdn.net/jacoob1024/article/details/79893008