力扣刷题-哈希表-求两个数组的交集

news2024/11/27 7:43:34

349 求两个数组的交集

题意:给定两个数组,编写一个函数来计算它们的交集。注意:输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。
image.png
提示:
1 <= nums1.length, nums2.length <= 1000
0 <= nums1[i], nums2[i] <= 1000
使用数组做哈希题目(或者说这种索引对应元素的),是因为题目都限制了数值的大小。刚好这道题目的提示部分限制了数组长度以及数组中元素的大小,所以可以用数组。思路同上一题。
时间复杂度 O(n) 空间复杂度O(1)

class Solution(object):
    def intersection(self, nums1, nums2):
        """
        :type nums1: List[int]
        :type nums2: List[int]
        :rtype: List[int]
        """
        # 数组解法
        # 为什么可以用数组?因为题目当中限制是数组长度以及数组中元素取值范围
        # 1 <= nums1.length, nums2.length <= 1000
        # 0 <= nums1[i], nums2[i] <= 1000
        temp1_list = [0]*1001
        temp2_list = [0]*1001
        for i in range(len(nums1)):
            temp1_list[nums1[i]] += 1
        for i in range(len(nums2)):
            temp2_list[nums2[i]] += 1
        result = []
        for i in range(1001):
            if temp1_list[i]*temp2_list[i] != 0:
                result.append(i)
        return result

如果没有限制数组大小及数组元素大小呢?——>使用字典和集合结合的方法。


class Solution(object):
    def intersection(self, nums1, nums2):
        """
        :type nums1: List[int]
        :type nums2: List[int]
        :rtype: List[int]
        """
        # 如果没有限制呢? ——> 使用字典和集合
        # 定义一个字段 键为数组元素的值 值为元素出现次数
        tabel = {}
        for i in nums1:
            tabel[i] = tabel.get(i, 0) + 1
        result = set() # 定义一个集合来存储结果
        for i in nums2:
            if i in tabel:
                result.add(i) # 将该元素添加到集合中
                del tabel[i] # 删除该键
        return list(result) # 注意最终返回的是列表

时间复杂度:O(n)、空间复杂度:O(1)
一种更简单的方法——>直接使用集合,取交集

class Solution(object):
    def intersection(self, nums1, nums2):
        """
        :type nums1: List[int]
        :type nums2: List[int]
        :rtype: List[int]
        """
        return list(set(nums1)&set(nums2))

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1052952.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

TensorFlow-Federated简介与安装

1、简介 TensorFlow Federated&#xff08;TFF&#xff09;是一个用于机器学习和其他分布式数据计算的开源框架。TFF 的开发旨在促进联邦学习 &#xff08;FL&#xff09;的开放研究和实验。联邦学习是一种机器学习方法&#xff0c;其中一个共享的全局模型在许多参与的客户之间…

集线器与交换机有什么区别?一文带你了解

作者&#xff1a;Insist-- 个人主页&#xff1a;insist--个人主页 梦想从未散场&#xff0c;传奇永不落幕&#xff0c;博主会持续更新优质网络知识、Python知识、Linux知识以及各种小技巧&#xff0c;愿你我共同在CSDN进步 目录 一、集线器 1. 集线器是什么&#xff1f; 2. …

高并发时代到底是Go还是Java?

作为一名用过Java和Go开发过微服务架构程序的在校学生的角度思考&#xff0c;本文将从以下几个方便来讲述Go和Java的区别。 前言 小明&#xff1a;听说Go在天然情况下支持并发 小红&#xff1a;我不管Java就是最好的语言 小明&#xff1a;不行&#xff0c;我要学以下神秘的Go…

vue3 element-ui-plus Carousel 跑马灯 的使用 及 踩坑记录

vue3 element-ui-plus Carousel 跑马灯 的踩坑记录 Carousel 跑马灯首页跑马灯demo Carousel 跑马灯 首先&#xff0c;打开其官网-跑马灯案例 跑马灯代码&#xff1a; <el-carousel :interval"5000" arrow"always"><el-carousel-item v-for"…

“智慧时代的引领者:探索人工智能的无限可能性“

目录 一.背景 二.应用 2.1金融领域 2.2医疗领域 2.3教育领域 三.发展 四.总结: 一.背景 人工智能&#xff08;Artificial Intelligence&#xff0c;简称AI&#xff09;&#xff0c;是指通过计算机程序模拟人类智能的一种技术。它是计算机科学、工程学、语言学、哲学等多…

Halcon 从基础到精通-01- 基本概念

1 HALCON Architecture 【图一】 HALCON的架构如上&#xff0c;其主要的部分&#xff0c;就是图像处理库。 2 HALCON的基本架构 2.1 Operators HALCON库功能的使用都是通过【operators】操作符来实现的。绝大多数的操作符由多种方法构成&#xff0c;具体可以参考给出的下面…

【开发篇】十、Spring缓存:手机验证码的生成与校验

文章目录 1、缓存2、用HashMap模拟自定义缓存3、SpringBoot提供缓存的使用4、手机验证码案例完善 1、缓存 缓存是一种介于数据永久存储介质与数据应用之间的数据临时存储介质使用缓存可以有效的减少低速数据读取过程的次数&#xff08;例如磁盘IO&#xff09;&#xff0c;提高…

驱动插入中断门示例代码

驱动插入中断描述符示例代码 最近做实验&#xff0c;每次在应用层代码写测试代码的时候都要手动挂一个中断描述符&#xff0c;很不方便所以就想着写个驱动挂一个中断门比较省事 驱动测试效果如下&#xff1a; 下面的代码是个架子&#xff0c;用的时候找个驱动历程传递你要插…

wvp-GB28181-pro windows系统编译安装的坑:录像功能不能正常使用

说明 wvp-GB28181-pro 只是包含了实时视频的接入功能&#xff1b; GitHub - 648540858/wvp-GB28181-pro: WEB VIDEO PLATFORM是一个基于GB28181-2016标准实现的网络视频平台&#xff0c;支持NAT穿透&#xff0c;支持海康、大华、宇视等品牌的IPC、NVR、DVR接入。支持国标级联…

“构建高效的前端表单验证与增删改功能实现“

目录 引言1. 基础增删改功能代码展示后端代码 2. 表单验证基本表单验证自定义验证规则 总结 引言 在现代Web开发中&#xff0c;前端表单验证和增删改功能是不可或缺的核心要素。本文将介绍如何使用ElementUI库来实现高效的前端表单验证和增删改功能。我们将从基础开始&#xf…

LFS在VMware Fusion 中启动时两种报错的解决办法

### 环境&#xff1a; LFS版本&#xff1a;LFS12.0 systemd VMware Fusion版本&#xff1a;Player Version 12.0.0 (16880131) PE版本&#xff1a;alpine-standard-3.18.3-x86_64 ### 部署过程&#xff1a; 1. 在云服务器编译LFS并将LFS目录打包&#xff1b; 2.在本地虚拟…

AI项目十三:PaddleOCR训练自定义数据集

若该文为原创文章&#xff0c;转载请注明原文出处。 续上一篇&#xff0c;PaddleOCR环境搭建好了&#xff0c;并测试通过&#xff0c;接下来训练自己的检测模型和识别模型。 paddleocr检测模型训练 1、准备数据集 在PaddleOCR目录下新建文件夹&#xff1a;train_data, 这个…

ChatGPT终于可以进行网络搜索 内容不再限于2021年9月前

微软和谷歌已经让旗下聊天机器人进行网上搜索&#xff0c;并提供原始材料的链接&#xff0c;以提高信息共享的可信度和范围。但是&#xff0c;ChatGPT迄今为止只接受了有时间限制的训练数据&#xff0c;这些数据仅限于从互联网上收集的2021年9月之前的信息。在周三的一系列推文…

一文读懂梯度下降

PPT版本有多个动图&#xff0c;更容易理解

数据结构--栈的实现

数据结构–栈的实现 1.栈的概念和结构&#xff1a; 栈的概念&#xff1a;栈是一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端 称为栈顶&#xff0c;另一端称为栈底。栈中的数据元素遵守后进先出LIFO&#xff08;Las…

【面试经典150 | 数组】除自身以外数组的乘积

文章目录 写在前面Tag题目来源题目解读解题思路方法一&#xff1a;记录左右乘积空间优化 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法&#xff0c;两到三天更新一篇文章&#xff0c;欢迎催更…… 专栏内容以分析题目为主&#xff0c;并附带一些对于本题涉及到…

给牛奶做直播之二

一、前言 给奶牛做直播之一 主要讲了视频的编解码&#xff0c;我们今天接着往下聊&#xff0c;主要介绍一下视频流的网络应用层协议&#xff0c;先简单讲一下视频文件格式与编码&#xff0c;视频文件格式有很多比如以前的AVI、RMVB、MP4等等无数种&#xff0c;视频文件格式和前…

QCefView 简介

什么是QCefView QCefView 是为 Qt 开发的一个封装集成了CEF(Chromium Embedded Framework)库的Wdiget UI组件。使用QCefView可以充分发挥CEF丰富强大的Web能力&#xff0c;快速开发混合架构的应用程序。它不需要开发者理解CEF的细节&#xff0c;能够在Qt中更容易的使用CEF&…

Flutter开发之Package与Plugin

前言 在flutter中有包和插件两个概念&#xff0c;插件 (plugin) 是 package 的一种&#xff0c;全称是 plugin package&#xff0c;我们简称为 plugin&#xff0c;中文叫插件。包(Package)主要指对flutter相关功能的封装&#xff0c;类似于Android中的插件和iOS中的三方库。而插…

Spring5应用之AOP切入点详解

作者简介&#xff1a;☕️大家好&#xff0c;我是Aomsir&#xff0c;一个爱折腾的开发者&#xff01; 个人主页&#xff1a;Aomsir_Spring5应用专栏,Netty应用专栏,RPC应用专栏-CSDN博客 当前专栏&#xff1a;Spring5应用专栏_Aomsir的博客-CSDN博客 文章目录 前言切入点详解切…