题目:
计算两个数组的交
样例:
nums1 = [1, 2, 2, 1]
, nums2 = [2, 2]
, 返回 [2, 2]
.
代码:
class Solution {
public:
/**
* @param nums1 an integer array
* @param nums2 an integer array
* @return an integer array
*/
vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
// Write your code here
sort(nums1.begin(), nums1.end());
sort(nums2.begin(), nums2.end());
vector<int> result;
auto p1 = nums1.begin();
auto p2 = nums2.begin();
while (p1 != nums1.end() && p2 != nums2.end()) {
if (*p1==*p2)
{
result.push_back(*p1);
p1++;
p2++;
}
else {
if (*p1 < *p2) {
p1++; }
else{
p2++;
}
}
}
return result;
}
};
思想: 先对两数组进行排序,然后建立一个向量result用来存储相同元素,然后两个指针分别从两数组的开始遍历,遇到相同值时保存在result中,若一大一小,小的向后一位,大的不动。