349. Intersection of Two Arrays

Given two arrays, write a function to compute their intersection.

Example:
Given nums1 = [1, 2, 2, 1], nums2 = [2, 2], return [2].

Note:

  • Each element in the result must be unique.
  • The result can be in any order.

一刷
题解:就是找两个数组中重复的元素,并加入到结果集中。并且结果集中元素不重复。

方法1: 用2个set很简单。nums1一个,结果集一个。
方法2: BinarySearch
将nums1 sort, 对于num2中的每个元素,利用BinarySearch判断是否存在,存在则加入set中

public class Solution {
    public int[] intersection(int[] nums1, int[] nums2) {
        Set<Integer> set = new HashSet<>();
        Arrays.sort(nums2);
        for(int num : nums1){
            if(bs(nums2, num)) set.add(num);
        }
        int[] res = new int[set.size()];
        int i = 0;
        for(int num : set){
            res[i] = num;
            i++;
        }
        return res;
    }
    
    private boolean bs(int[] nums, int target){
        int lo = 0, hi = nums.length-1;
        while(lo<=hi){
            int mid = lo + (hi - lo)/2;
            if(nums[mid] == target) return true;
            else if(nums[mid]<target) lo = mid+1;
            else hi = mid-1;
        }
        return false;
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容