0
点赞
收藏
分享

微信扫一扫

2022-3-27

捌柒陆壹 2022-03-30 阅读 65
java力扣

5268. 找出两数组的不同

示例 1:

输入:nums1 = [1,2,3], nums2 = [2,4,6]
输出:[[1,3],[4,6]]
解释:
对于 nums1 ,nums1[1] = 2 出现在 nums2 中下标 0 处,然而 nums1[0] = 1 和 nums1[2] = 3 没有出现在 nums2 中。因此,answer[0] = [1,3]。
对于 nums2 ,nums2[0] = 2 出现在 nums1 中下标 1 处,然而 nums2[1] = 4 和 nums2[2] = 6 没有出现在 nums2 中。因此,answer[1] = [4,6]。

思路:创建两列表用于存放两数组,使用contains()该元素判断是否在另一数组中,若不在则存入list中。

代码:

class a{
	public List<List<Integer>> findDifference(int[] nums1, int[] nums2) {
		List<List<Integer>> list=new ArrayList<List<Integer>>();
		int len1=nums1.length,len2=nums2.length;		
		List resultList1 = new ArrayList<>(nums1.length);
		for (int s : nums1) {
		    resultList1.add(s);
		}		
		List resultList2 = new ArrayList<>(nums2.length);
		for (int s : nums2) {
		    resultList2.add(s);
		}		
		list.add(new LinkedList<>());
		list.add(new LinkedList<>());
		for(int i =0;i<len1;i++) {
			if(!resultList2.contains(nums1[i])&&!list.get(0).contains(nums1[i])) {

				list.get(0).add(nums1[i]);
			}
		}
		for(int i =0;i<len2;i++) {
			if(!resultList1.contains(nums2[i])&&!list.get(1).contains(nums2[i])){
				list.get(1).add(nums2[i]);
			}
		}
    return list;
   }
}

优化代码

参考链接

class Solution {
   public List<List<Integer>> findDifference(int[] nums1, int[] nums2) {
        List<List<Integer>> res = new ArrayList();
        Set<Integer> set1 = new HashSet();        
        Set<Integer> set2 = new HashSet();
        for(int num : nums1) set1.add(num);
        for(int num : nums2) {
            set2.add(num);
            if(set1.contains(num)) set1.remove(num);
        }
        for(int num : nums1) {
            if(set2.contains(num)) set2.remove(num);
        }
        res.add(new ArrayList(set1));
        res.add(new ArrayList(set2));
        return res;
    }
}
举报

相关推荐

0 条评论