您的位置:首页 > 其它

leetcode-350- 两个数组的交集 II

2019-08-02 23:23 246 查看

问题:

 

package com.example.demo;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class Test350 {

/**
* 双指针,先对数据进行排序预处理,然后使用两个指针分别找到两个数组中相同的值,并放到list中
*/
public int[] intersect(int[] nums1, int[] nums2) {
if (nums1 == null || nums1.length == 0 || nums2 == null || nums2.length == 0) {
return new int[0];
}
List<Integer> list = new ArrayList<>();
Arrays.sort(nums1);
Arrays.sort(nums2);
int pointer1 = 0;
int pointer2 = 0;
while (pointer1 < nums1.length && pointer2 < nums2.length) {
if (nums1[pointer1] < nums2[pointer2]) {
pointer1++;
} else if (nums1[pointer1] > nums2[pointer2]) {
pointer2++;
} else {
list.add(nums1[pointer1]);
pointer1++;
pointer2++;
}
}
int[] res = new int[list.size()];
for (int i = 0; i < list.size(); i++) {
res[i] = list.get(i);
}
return res;
}

public static void main(String[] args) {
Test350 t = new Test350();
int[] arr1 = {4, 9, 5};
int[] arr2 = {9, 4, 9, 8, 4};
int[] intersect = t.intersect(arr2, arr1);
for (int i : intersect) {
System.out.print(i + " ");
}
}
}

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: