1. 程式人生 > >Leetcode 349. Intersection of Two Arrays 解題報告 Python Java

Leetcode 349. Intersection of Two Arrays 解題報告 Python Java

1 解題思想

這道題就是說,求兩個陣列的交集,所以做法也很簡單:
使用雜湊Set存入第一個陣列的值
遍歷第二個陣列,如果第二個的數在Set中出現,那麼就是交集(與此同時,因為只能返回一個值,所以出現後還需要從Set中刪除哦)

2 原題

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.

3 AC解

// 有問題可以新浪微博@MebiuW
public class Solution {
    public int[] intersection(int[] nums1, int[] nums2) {
        HashSet<Integer> set = new HashSet<Integer>();
        for(int i=0;i<nums1.length;i++)
            set.add(nums1[i]); //遍歷增加
        List<Integer> resultList = new
ArrayList<Integer>(); for (int i=0;i<nums2.length;i++) if(set.contains(nums2[i])){ resultList.add(nums2[i]); set.remove(nums2[i]); //記得刪除 } int result[] = new int[resultList.size()]; for(int i=0;i<resultList.size();i++) result[i]=resultList.get
(i); return result; } }

4 AC 解 Python版

感覺用Python好簡潔,喵

class Solution(object):
    def intersection(self, nums1, nums2):
        result = list()
        for num in set(nums1) :
            if num in nums2:
                result.append(num)
        return result

5 再度更新個一句話版的

python的列表生成器,剛剛忙著趕,沒用這個。。畢竟我對Python也不熟悉,只是知道有這個東西,喵

class Solution(object):
    def intersection(self, nums1, nums2):
        return [num for num in set(nums1) if num in nums2]