LC--数组中的相同元素

题目类型:Midium

Posted by 谢玄xx on February 28, 2022

解题思路

使用迭代器来解决问题。

  • 先将两个数组排序,之后使用迭代器遍历两个数组;
  • 如果出现两个数组中的元素相等,就将其push_back到target容器中;
  • 如果it1小,那么it1++;如果it2小,就it2++.

之后要养成编写测试用例的习惯,需要考虑多种极端情况。

代码如下:

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

  vector<int> intersect(vector<int> &nums1, vector<int> &nums2)
  {
	vector<int> target;
	sort(num1.begin(),num1.end());
	sort(num2.begin(),num2.end());
	for(vector<int>:: iterator it1 = nums1.begin(), it2 = nums2.begin();it1 != nums1.end() && it2 != nums.end())
	{
	  if(*it1 < *it2)
	  {
		it1++;
	  }
	  else if(*it1 == *it2)
	  {
		target.push_back(*it1);
		it1++;
		it2++;
	  }
	  else if(*it1 > *it2)
	  {
		it2++;
	  }
	}
	for(int i = 0; i < target.size() - 1; i++)
	{
	  cout<<target[i]<<endl;
	}
	return target;
  }
  void main() {
	vector<int> nums1;
	vector<int> nums2;
	nums1.push_back(5);
	nums1.push_back(3);
	nums1.push_back(2);
	nums1.push_back(6);
	nums2.push_back(7);
	nums2.push_back(2);
	nums2.push_back(8);
	nums2.push_back(6);
	intersect(num1,nums2);
	for(int i = 0; i < target.size() - 1; i++)
	{
	  cout<<"重复元素为" << target[i] << endl;
	}
	//return 0;
  }