数组中重复的数字

思路:我们可以重排这个数组,原则就是将每个数字放在与它下标对应的位置上去,如果发现该下标位置上的数与自己相等,那么说明该数字重复了。因此从0下标开始,将这个下标对应的数字找出来放到该位置。

# include<iostream>
# include<vector>
using namespace std;

int fun(vector<int> arr)
{
	for (int i = 0; i < arr.size(); i++)
	{
		while (arr[i] != i)
		{
			if (arr[i] == arr[arr[i]])
			{
				return arr[i];
			}
			int tmp = arr[i];
			arr[i] = arr[tmp];
			arr[tmp] = tmp;
		}
	}
	throw"没有重复";
}
int main()
{
	vector<int> arr;
	arr.push_back(1);
	arr.push_back(2);
	arr.push_back(3);
	arr.push_back(4);
	arr.push_back(5);
	arr.push_back(2);
	cout << fun(arr) << endl;
	return 0;
}

 

相关文章:

  • 2021-09-07
猜你喜欢
相关资源
相似解决方案