​力扣解法汇总2032. 至少在两个数组中出现的值

news/2024/7/5 2:09:57

目录链接:

力扣编程题-解法汇总_分享+记录-CSDN博客

GitHub同步刷题项目:

https://github.com/September26/java-algorithms

原题链接:力扣


描述:

给你三个整数数组 nums1nums2 和 nums3 ,请你构造并返回一个 元素各不相同的 数组,且由 至少 在 两个 数组中出现的所有值组成数组中的元素可以按 任意 顺序排列。

示例 1:

输入:nums1 = [1,1,3,2], nums2 = [2,3], nums3 = [3]
输出:[3,2]
解释:至少在两个数组中出现的所有值为:
- 3 ,在全部三个数组中都出现过。
- 2 ,在数组 nums1 和 nums2 中出现过。

示例 2:

输入:nums1 = [3,1], nums2 = [2,3], nums3 = [1,2]
输出:[2,3,1]
解释:至少在两个数组中出现的所有值为:
- 2 ,在数组 nums2 和 nums3 中出现过。
- 3 ,在数组 nums1 和 nums2 中出现过。
- 1 ,在数组 nums1 和 nums3 中出现过。

示例 3:

输入:nums1 = [1,2,2], nums2 = [4,3,3], nums3 = [5]
输出:[]
解释:不存在至少在两个数组中出现的值。

提示:

  • 1 <= nums1.length, nums2.length, nums3.length <= 100
  • 1 <= nums1[i], nums2[j], nums3[k] <= 100

解题思路:

* 解题思路:
* 用一个map来记录出现的次数,key为出现的数字,value为出现的次数,则最终map中value超过2的key就是符合要求的数字。
* 但是存在一个问题,就是一个数组多存在多个相同数字的情况,所以我们使用一个set来过滤

代码:

public class Solution2032 {

    public List<Integer> twoOutOfThree(int[] nums1, int[] nums2, int[] nums3) {
        Map<Integer, Integer> map = new HashMap<>();
        HashSet<Integer> set = new HashSet<>();
        for (int i : nums1) {
            if (set.contains(i)) {
                continue;
            }
            set.add(i);
            Integer num = map.getOrDefault(i, 0);
            map.put(i, num + 1);
        }
        set.clear();
        for (int i : nums2) {
            if (set.contains(i)) {
                continue;
            }
            set.add(i);
            Integer num = map.getOrDefault(i, 0);
            map.put(i, num + 1);
        }
        set.clear();
        for (int i : nums3) {
            if (set.contains(i)) {
                continue;
            }
            set.add(i);
            Integer num = map.getOrDefault(i, 0);
            map.put(i, num + 1);
        }
        return map.entrySet().stream().filter(entry -> entry.getValue() >= 2).map(Map.Entry::getKey).collect(Collectors.toList());
    }
}


http://lihuaxi.xjx100.cn/news/517314.html

相关文章

tomcat支持多个ssl证书设置

conf/server.xml添加&#xff1a; <Connector port"443" protocol"org.apache.coyote.http11.Http11Nio2Protocol" defaultSSLHostConfigName"ssl.****.cn" maxThreads"350" SSLEnabled"true" > …

MATLAB形态学的基本运算膨胀和腐蚀(开、闭运算)

形态学中两种基本的操作是膨胀和腐蚀&#xff0c;膨胀是指在图像中为其边界添加像素点&#xff0c;而腐蚀是其逆过程。对应的添加和移除像素点数依赖于处理图像结构元素矩阵的大小和形式。 一.膨胀处理 膨胀的运算符为⊕, A用B来膨胀写作A⊕B&#xff0c;MATLAB中提供了预定义…

系统日志- Journal and Rsyslog

Log文件 Rsyslog 的配置文件/etc/rsyslog.conf Rsyslog的旧的信息会在最前面&#xff0c;新的信息会在最下面。 tail -f /var/log/messages #可以动态监控日志信息logger 发送日志信息 logger -p user.notice #“内容” -p选项测试实验&#xff1a; 1.在/etc/rsyslog.d/文…

推荐三款 Mac 上的理财神器 iCompta、Rublik、UctoX

推荐三款 Mac 上的理财神器 iCompta、Rublik、UctoX 今天推荐三款理财神器&#xff0c;像个人的话可以使用 iCompta&#xff08;个人财务管理&#xff09;一款软件就好了&#xff0c;但有些朋友可能有关注汇率的需求&#xff0c;可以使用 Rublik&#xff08;汇率动态&#xff…

机器学习:图文详细总结马尔科夫链及其性质(附例题分析)

目录0 写在前面1 从一个实例出发2 马尔科夫链3 马氏链的基本性质4 C-K方程5 平稳状态分布6 遍历性与例题分析0 写在前面 机器学习强基计划聚焦深度和广度&#xff0c;加深对机器学习模型的理解与应用。“深”在详细推导算法模型背后的数学原理&#xff1b;“广”在分析多个机器…

JDBC API详解

文章目录入门案例DriverManagerConnectionStatementResultSetPreparedStatement数据库连接池完整代码入门案例 package jdbc;import java.sql.*;public class connectionTest {public static void main(String[] args) throws ClassNotFoundException, SQLException {//1.注册…

C#中组合快捷键的实现

//方法一.在form_load的时候写上// this.KeyPreview=true; //表示窗体接受按键事件//然后在KeyDown事件中写入如下代码实现输入的是否是Ctrl+A的组合键:private void Form1_KeyDown(object sender, KeyEventArgs e){if (e.KeyCode == Keys.A && e.Modifiers == Keys.C…

C# 与WEB 服务器通信

web server与web服务器通信应先使用postman测试,确认服务器正常再写代码发送UTF-8 的json字符串using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;using System.IO; using System.Net;public enum HttpV…