youngyangyang04 / leetcode-master-comment

用来做评论区
0 stars 0 forks source link

[Vssue]0349.两个数组的交集.md #24

Open youngyangyang04 opened 6 months ago

youngyangyang04 commented 6 months ago

https://programmercarl.com/0349.%E4%B8%A4%E4%B8%AA%E6%95%B0%E7%BB%84%E7%9A%84%E4%BA%A4%E9%9B%86.html

Du1in9 commented 4 months ago
class Solution {
    public int[] intersection(int[] nums1, int[] nums2) {
        Set<Integer> set = new HashSet<>();
        Set<Integer> resSet = new HashSet<>();
        for (int num : nums1) {
            set.add(num);
        }
        for (int num : nums2) {
            if (set.contains(num)) {
                resSet.add(num);
            }
        }
        int[] res = new int[resSet.size()];
        int index = 0;
        for (int num : resSet) {
            res[index++] = num;
        }
        return res;
    }
}
haveadrame commented 3 months ago

打卡

Ding-Jiaxiong commented 3 months ago

打卡

package HashTable.LeetCode349;

import java.util.HashSet;

/**
 * 给定两个数组 nums1 和 nums2 ,返回 它们的交集。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。
 * <p>
 * 思路:交集就集合嘛,HashSet
 *
 * @author Ding Jiaxiong
 */

public class Main {

    public static int[] intersection(int[] nums1, int[] nums2) {

        HashSet<Integer> set = new HashSet<>();

        HashSet<Integer> resset = new HashSet<>();

        for (int i : nums1) {  // nums1 元素全部压入
            set.add(i);
        }

        for (int i : nums2) { // 判断 nums2 元素
            if (set.contains(i)) {
                resset.add(i);
            }
        }

        return resset.stream().mapToInt(x -> x).toArray();  // 集合转数组,流操作

    }

    public static void main(String[] args) {

        int[] nums1 = {1, 2, 2, 1};
        int[] nums2 = {2, 2};

        for (int i : intersection(nums1, nums2)) {
            System.out.print(i + " ");
        }

    }
}
djsjznsn commented 2 months ago

上一道题用了HashMap发现要用数组,这题改用数组结果发现要用哈希的来我这里集合。。。

Bryan-CR7 commented 4 weeks ago

打卡:遇到判断一个元素是否出现过的场景应该第一时间想到哈希法

xueqiaoHao commented 1 week ago

这里set用list应该也是可以的,只是判断是否出现过。不过这个终止条件还是想不出来,比较烧脑。

Kukdo commented 1 day ago

打卡

class Solution {
    public int[] intersection(int[] nums1, int[] nums2) {
        int[] hash1 = new int[1001];
        int[] hash2 = new int[1001];
        List<Integer> resList = new ArrayList<>();
        for (int num : nums1) {
            hash1[num] = 1;
        }
        for (int num : nums2) {
            hash2[num] = 1;
        }
        for (int k = 0; k < 1001; k++) {
            if (hash1[k] + hash2[k] == 2) {
                resList.add(k);
            }
        }

        int[] res = new int[resList.size()];
        int index = 0;
        for (int num : resList) {
            res[index++] = num;
        }
        return res;
    }
}