问题描述:返回两个数组的交
样例
nums1 = [1, 2, 2, 1], nums2 = [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()); int len1=nums1.size(); int len2=nums2.size(); vector<int> A; int i=0,j=0; while(i<len1&&j<len2) {if(nums1[i]==nums2[j]) {A.push_back(nums1[i]);} while(nums1[i]==nums1[i+1]) {i++;} while(nums2[j]==nums2[j+1]) {j++;} if(nums1[i]<nums2[j]) {i++;} else {j++;} } return A; } };感想:一开始没有想到想将数组排序,发现如果不排序,则一个数组需要遍历多次,而排序后再找交集便方便许多。