首页 > 其他分享 >【LeeCode】349. 两个数组的交集

【LeeCode】349. 两个数组的交集

时间:2023-03-09 22:32:15浏览次数:50  
标签:交集 res nums1 int LeeCode new intersection 349 nums2

【题目描述】

给定两个数组 ​​nums1​​ 和 ​​nums2​​ ,返回 它们的交集 唯一 的。我们可以 不考虑输出结果的顺序 。

​​​​https://leetcode.cn/problems/intersection-of-two-arrays/​


【示例】

【LeeCode】349. 两个数组的交集_Test

【代码】admin

思路:2个循环

package com.company;
// 2023-03-09
import java.util.*;

class Solution {
public int[] intersection(int[] nums1, int[] nums2) {
List<Integer> list = new ArrayList<>();
for (int i = 0; i < nums1.length; i++){
for (int j = 0; j < nums2.length; j++){
if (nums1[i] == nums2[j] && !list.contains(nums2[j])){
list.add(nums2[j]);
}
}
}
int[] res = new int[list.size()];
for (int i = 0; i < list.size(); i++){
res[i] = list.get(i);
}
return res;
}
}

public class Test {
public static void main(String[] args) {
new Solution().intersection(new int[]{1,2,2,1}, new int[]{2, 2}); // 输出:[2]
new Solution().intersection(new int[]{4,9,5}, new int[]{9,4,9,8,4}); // 输出:[9,4]
}
}

【代码】admin

思路: 基于内部set取交集

package com.company;
// 2023-03-09
import java.util.*;
import java.util.stream.Collectors;

class Solution {
public int[] intersection(int[] nums1, int[] nums2) {

Set<Integer> set1 = Arrays.stream(nums1).boxed().collect(Collectors.toSet());
Set<Integer> set2 = Arrays.stream(nums2).boxed().collect(Collectors.toSet());
set1.retainAll(set2);
int[] res = new int[set1.size()];
int index = 0;
for (Integer x : set1){
res[index] = x;
index++;
}
System.out.println(Arrays.toString(res));
return res;
}
}

public class Test {
public static void main(String[] args) {
new Solution().intersection(new int[]{1,2,2,1}, new int[]{2, 2}); // 输出:[2]
new Solution().intersection(new int[]{4,9,5}, new int[]{9,4,9,8,4}); // 输出:[9,4]
}
}

【代码】admin

思路: 把一个加入hash中然后判断

package com.company;
// 2023-03-09
import java.util.*;
import java.util.stream.Collectors;

class Solution {
public int[] intersection(int[] nums1, int[] nums2) {
List<Integer> list = Arrays.stream(nums2).boxed().collect(Collectors.toList());
List<Integer> res = new ArrayList<>();
for (int i = 0; i < nums1.length; i++){
if (list.contains(nums1[i]) && !res.contains(nums1[i])){
res.add(nums1[i]);
}
}
int[] re = new int[res.size()];
for (int i = 0; i < res.size(); i++){
re[i] = res.get(i);
}
return re;
}
}

public class Test {
public static void main(String[] args) {
new Solution().intersection(new int[]{1,2,2,1}, new int[]{2, 2}); // 输出:[2]
new Solution().intersection(new int[]{4,9,5}, new int[]{9,4,9,8,4}); // 输出:[9,4]
}
}

标签:交集,res,nums1,int,LeeCode,new,intersection,349,nums2
From: https://blog.51cto.com/u_13682316/6111382

相关文章

  • 数组去重、交集、归并
    去重简单结构letarr=[1,2,3,5,3,5,2,1]Set去重constnewArr1=[...newSet(arr)]//或constnewArr2=Array.from(newSet(arr))indexOf去重constnewArr=......
  • 【LeeCode】
    【题目描述】给你一个非负整数 ​​x​​​ ,计算并返回 ​​x​​ 的 算术平方根 。由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去。注意:不允许使用......
  • day06 打卡242.有效的字母异位词 349. 两个数组的交集 202. 快乐数
    day06打卡242.有效的字母异位词349.两个数组的交集202.快乐数242.有效的字母异位词242题目链接1.思路:可以先记住s的每个字符,如果出现就+1;再次循环t的每一个字符,寻......
  • 代码随想录算法训练营Day6 | | 242.有效的字母异位词 ,349. 两个数组的交集 , 202. 快
    前置知识复习哈希表 哈希函数 哈希碰撞拉链法 链法就是要选择适当的哈希表的大小,这样既不会因为数组空值而浪费大量内存,也不会因为链表太长而在查找上浪费太多......
  • 【LeeCode】974. 和可被 K 整除的子数组
    【题目描述】给定一个整数数组 ​​nums​​​ 和一个整数 ​​k​​​ ,返回其中元素之和可被 ​​k​​ 整除的(连续、非空) 子数组 的数目。子数组 是数组的 连续......
  • 2023.3.4Leecode982按位与为零的三元组
    题目的要求给你一个整数数组nums,返回其中按位与三元组的数目。按位与三元组是由下标(i,j,k)组成的三元组,并满足下述全部条件:0<=i<nums.length0<=j<num......
  • 探索边缘、人工智能和物联网的交集
    “数据是新的石油”,这句话出现在企业首席信息官的雷达上已有15年多了。从那时起,企业数据堆栈已经发展到支持复杂的商业智能任务。最近,在2022年12月,由于OpenAI的ChatGPT,我们......
  • 【LeeCode】820. 单词的压缩编码
    【题目描述】单词数组 ​​words​​ 的 有效编码 由任意助记字符串 ​​s​​​ 和下标数组 ​​indices​​ 组成,且满足:​​words.length==indices.length​​......
  • 【LeeCode】2024. 考试的最大困扰度
    【题目描述】一位老师正在出一场由 ​​n​​​ 道判断题构成的考试,每道题的答案为true(用 ​​'T'​​​ 表示)或者false(用 ​​'F'​​ 表示)。老师想增加学生对自......
  • 【LeeCode】957. N 天后的牢房 -- todo
    【题目描述】监狱中 ​​8​​ 间牢房排成一排,每间牢房可能被占用或空置。每天,无论牢房是被占用或空置,都会根据以下规则进行变更:如果一间牢房的两个相邻的房间都被占用或......