Leetcode:349. 两个数组的交集【题解超详细】

news2024/11/25 13:39:09

题目

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

难度:简单

题目链接:349.两个数组的交集

示例 1:

输入:nums1 = [1,2,2,1], nums2 = [2,2]
输出:[2]

示例 2:

输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]
输出:[9,4]
解释:[4,9] 也是可通过的

提示:

  • 1 <= nums1.length, nums2.length <= 1000
  • 0 <= nums1[i], nums2[i] <= 1000

思路解析

根据题目的意思就是求出两个数组的交集,返回两个数组都包含的元素。

下方代码的方法就是 用两层for循环来比较nums1和nums2两个数组中相同的元素,然后把相同的元素,通过创建一个临时数组,存放与下标与之对应的元素 ( 前提是先把来临时数组需要用到元素初始化为-1 ,原因是方便以后的数组遍历)。

最后遍历临时数组,把不是-1的元素放到返回数组中。

代码展示

/**
 * Note: The returned array must be malloced, assume caller calls free().
 */
 int tmp[1001] = {0};//创建临时数组
int* intersection(int* nums1, int nums1Size, int* nums2, int nums2Size, int* returnSize){
    int * arr = (int*)malloc(sizeof(int)*nums1Size);
    int i = 0;
    int j = 0;
    int x = 0;
    //把数组所有元素全部初始化为-1
    for(i = 0;i<=1000;i++)
    {
        tmp[i] = -1;
    }
    for(i = 0;i<nums1Size;i++)
    {
        for(j = 0;j<nums2Size;j++)
        {
            if(nums1[i] == nums2[j])//把对应的元素放到相应的数组下标
            {
                x = nums1[i]%1001;
                tmp[x] = x; 
            }
        }
    }
    j = 0;
    for(i = 0;i<=1000;i++)
    {
        if(tmp[i] != -1)
        {
            arr[j++] = tmp[i];
        }
    }
    *returnSize = j;
    return arr;
}

【详细解析】

如果只看思路解析的话,那么我们想的是应该怎木写代码呢,先在函数外创建一个临时的数组,然后在函数内部使用malloc使用动态内存分配一个返回数组。

然后使用一个for循环先把临时数组里面的元素置成 - 1,因为数组存储元素的数字的范围是[ 0,1000]。

接着用两层for循环进行判断两个数组是否相同的元素(即数组元素的交集),在内层的for循环里面使用一个if语句进行判断,如果找到两个数组元素的交集我们就先把元素放到临时数组(tmp[])相应的位置。

                x = nums1[i]%1001;
                tmp[x] = x; 

当放到临时数组后,还需要把临时数组中元素不等于-1的元素放到返回数组中。

        if(tmp[i] != -1)
        {
            arr[j++] = tmp[i];
        }

 接着就是返回 返回数组的元素的个数 和 返回 返回数组首元素的地址。

    *returnSize = j;//返回数组的大小
    return arr;//返回数组首元素的地址

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

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

相关文章

CentOS7上源码安装Redis6

CentOS7上源码安装Redis6 安装依赖开始安装下载安装包解压安装包编译源代码修改配置文件 启动并连接启动redis服务器本地连接远程连接 下篇预告 安装依赖 首先我们是源码包安装我们需要安装C语言编译器&#xff0c;顺便下载wget&#xff1a; yum install -y gcc wget开始安装…

Ab3d.PowerToys 11.0.8614 Crack

版本 11.0.8614 修补程序 使用 MouseCameraController 移动相机时防止旋转 FreeCamera。 版本 11.0.8585 重大更改&#xff1a;由于专利问题删除了 ViewCubeCameraController - 请联系支持人员以获取更多信息以及如果您想继续使用此控件。添加了 CameraNavigationCircles 控件…

第12节——生命周期

一、概念 生命周期指 React 组件从装载至卸载的全过程&#xff0c;这个过程内置多个函数供开发者在组件的不同阶段执行需要的逻辑。 状态组件主要通过 3 个生命周期阶段来管理&#xff0c;分别是 挂载阶段&#xff08;MOUNTING&#xff09;&#xff0c;更新阶段&#xff08;U…

AJAX学习笔记3练习

AJAX学习笔记2发送Post请求_biubiubiu0706的博客-CSDN博客 1.验证用户名是否可用 需求,用户输入用户名,失去焦点-->onblur失去焦点事件,发送AJAX POST请求,验证用户名是否可用 新建表 前端页面 WEB-INF下新建lib包引入依赖,要用JDBC 后端代码 package com.web;import jav…

ModaHub魔搭社区:自动化机器学习框架AutoML

AutoML 自动化机器学习AutoML 是机器学习中一个相对较新的领域,它主要将机器学习中所有耗时过程自动化,如数据预处理、最佳算法选择、超参数调整等,这样可节约大量时间在建立机器学习模型过程中。 自动机器学习 AutoML: 对于 ,令 表示特征向量, 表示对应的目标值。给定…

基于SpringCloudAlibaba实现的NacosConfig

概述 Nacos除了实现了服务的注册发现之外&#xff0c;还将配置中心功能整合在了一起。通过Nacos的配置管理功能&#xff0c;我们可以将整个架构体系内的所有配置都集中在Nacos中存储。这样做的好处主要有以下几点&#xff1a; 分离的多环境配置&#xff0c;可以更灵活的管理权…

基于Java+SpringBoot+Vue前后端分离大学生智能消费记账系统设计和实现

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

基于Java+SpringBoot+Vue前后端分离农商对接系统设计和实现

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

机器人中的数值优化(十三)——QP二次规划

本系列文章主要是我在学习《数值优化》过程中的一些笔记和相关思考&#xff0c;主要的学习资料是深蓝学院的课程《机器人中的数值优化》和高立编著的《数值最优化方法》等&#xff0c;本系列文章篇数较多&#xff0c;不定期更新&#xff0c;上半部分介绍无约束优化&#xff0c;…

MLOps:掌握机器学习部署:Docker、Kubernetes、Helm 现代 Web 框架

介绍&#xff1a; 在机器学习的动态世界中&#xff0c;从开发模型到将其投入生产的过程通常被认为是复杂且多方面的。 然而&#xff0c;随着 Docker、Kubernetes 等工具以及 FastAPI、Streamlit 和 Gradio 等用户友好的 Web 框架的出现&#xff0c;这一过程变得比以往更加简化…

CS420 课程笔记 P3 - 计数系统基础和 Hex, Decimal, Binary 进制

文章目录 IntroductionInspirationWhy base systemsBinary & HexCounting in binaryAdditional resources Introduction 笔记作者 tips&#xff1a;这一节是关于进制的讲解&#xff0c;推荐观看原视频或学会二进制的读者跳过这一篇&#xff01; 本节课将介绍基本的计算机系…

台球击球角度公式. 包含数学推导

第一步. 物理来分析. 第二步. 数学计算.

【jsvue】联合gtp仿写一个简单的vue框架,以此深度学习JavaScript

用 gtp 学习 Vue 生命周期的原理 lifecycle.js function Vue(options) {// 将选项保存到实例的 $options 属性中this.$options options;// 若存在 beforeCreate 钩子函数&#xff0c;则调用之if (typeof options.beforeCreate function) {options.beforeCreate.call(this);…

Qt 5.15编译及集成Crypto++ 8.7.0笔记

一、背景 为使用AES加密库&#xff08;AES/CBC加解密&#xff09;&#xff0c;选用Crypto 库&#xff08;官网&#xff09;。   最新Crypto C库依次为&#xff1a;8.8.0版本&#xff08;2023-6-25&#xff09;、8.7.0&#xff08;2022-8-7&#xff09;和8.6.0&#xff08;202…

MySQL数据库——多表查询(4)-实例练习、多表查询总结

目录 练习1 练习2 总结 1.多表关系 2.多表查询 进行案例练习之前&#xff0c;需要先增加一个表格 create table salgrade(grade int,losal int, -- 对应等级的最低薪资hisal int -- 对应等级的最高薪资 ) comment 薪资等级表;insert into salgrade values (1,0,3000)…

【高等数学1800】——一元函数微分学的应用

本文仅用于个人学习记录&#xff0c;使用的教材为汤家凤老师的《高等数学辅导讲义》。本文无任何盈利或者赚取个人声望的目的&#xff0c;如有侵权&#xff0c;请联系删除&#xff01; 文章目录 一、入门练习二、基础练习 一、入门练习 本题需要注意在写凸区间时应该是闭区间。…

华为云云服务器评测|前端开发同学的初体验部署贪吃蛇!

文章目录 前言初配置初始化宝塔面板安装Nginx、上传项目修改nginx配置效果展示 前言 作为一名前端同学&#xff0c;我的技能和日常工作主要集中在用户界面的设计和交互上&#xff0c;与服务器产品相关的经验相对较少。正好看到了咱们华为云开展的评测活动&#xff0c;决定借着…

路径规划 | 图解Lazy Theta*算法(附ROS C++/Python/Matlab仿真)

目录 0 专栏介绍1 Theta*算法局限性2 Lazy Theta*算法原理3 Theta* VS. Lazy Theta*4 仿真实现4.1 ROS C实现4.2 Python实现4.3 Matlab实现 0 专栏介绍 &#x1f525;附C/Python/Matlab全套代码&#x1f525;课程设计、毕业设计、创新竞赛必备&#xff01;详细介绍全局规划(图…

【nerfStudio】2-基于nerfStudio训练第一个NeRF模型

训练第一个NeRF模型 训练和运行查看器 以下内容将训练一个_nerfacto_模型: # 下载一些测试数据: ns-download-data nerfstudio --capture-name=poster # 训练模型 ns-train nerfacto --data data/nerfstudio/poster如果一切正常,应该会看到如下的训练进度: 在终端末尾的…

FPGA GTX aurora 8b/10b编解码 PCIE 板对板视频传输,提供2套工程源码加QT上位机源码和技术支持

目录 1、前言免责声明 2、我这里已有的 GT 高速接口解决方案3、GTX 全网最细解读GTX 基本结构GTX 发送和接收处理流程GTX 的参考时钟GTX 发送接口GTX 接收接口GTX IP核调用和使用 4、设计思路框架视频源选择ADV7611解码芯片配置及采集动态彩条视频数据组包GTX aurora 8b/10b数据…