兩個數組的交集(重複元素跳過)>>>
- 先對數組進行排序,然後定義指針
index1,index2
分別遍歷兩個數組,兩個指針分別遍歷兩個數組,若發現數組中有重複元素,則跳過重複元素,然後判斷兩個數組的值是否相等;如相等則將值存入結果集中,若數組1小於數組2,則將數組1中的指針向前移動,反之
package KTwoPointers;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class Problem349 {
public int[] intersection(int[] nums1, int[] nums2) {
Arrays.sort(nums1);
Arrays.sort(nums2);
List<Integer> list = new ArrayList<>();
int nums1Index = 0;
int nums2Index = 0;
while(nums1Index<nums1.length&&nums2Index<nums2.length){
while (nums1Index<nums1.length-1&&nums1[nums1Index]==nums1[nums1Index+1]){
nums1Index++;
}
while (nums2Index<nums2.length-1&&nums2[nums2Index]==nums2[nums2Index+1]){
nums2Index++;
}
if(nums1[nums1Index]==nums2[nums2Index]){
list.add(nums1[nums1Index]);
nums1Index++;
nums2Index++;
}else if(nums1[nums1Index]<nums2[nums2Index]){
nums1Index++;
}else{
nums2Index++;
}
}
int[] nums = new int[list.size()];
for(int i=0;i<nums.length;i++)
nums[i]=list.get(i);
return nums;
}
}