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

这篇具有很好参考价值的文章主要介绍了Leetcode:349. 两个数组的交集【题解超详细】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

题目

给定两个数组 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;//返回数组首元素的地址

Leetcode:349. 两个数组的交集【题解超详细】,【leetcode】题解,leetcode,算法,动态规划文章来源地址https://www.toymoban.com/news/detail-697035.html

到了这里,关于Leetcode:349. 两个数组的交集【题解超详细】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 力扣(LeetCode)算法_C++—— 两个数组的交集

    给定两个数组 nums1 和 nums2 ,返回 它们的交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。 示例 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] 也是可通过的

    2024年02月09日
    浏览(12)
  • leetcode 349 两个数组的集合

    leetcode 349 两个数组的集合

    给定两个数组 nums1 和 nums2 ,返回 它们的交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。 示例 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] 也是可通过的 这题比较简单,采

    2024年01月16日
    浏览(8)
  • 349. 两个数组的交集

    1.用到了Set集合,要学会集合操作方法,Set集合没有特殊的操作方法,都是Collection的那些方法。 2.学会基本数据类型数组,包装类数组,集合之间的相互转化 https://blog.csdn.net/m0_37220730/article/details/107803763

    2024年04月08日
    浏览(13)
  • 【力扣】349. 两个数组的交集 <哈希>

    给定两个数组 nums1 和 nums2 ,返回 它们的交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。 示例 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.l

    2024年02月11日
    浏览(13)
  • 力扣热门算法题 349. 两个数组的交集,387. 字符串中的第一个唯一字符,394. 字符串解码

    力扣热门算法题 349. 两个数组的交集,387. 字符串中的第一个唯一字符,394. 字符串解码

    349. 两个数组的交集,387. 字符串中的第一个唯一字符,394. 字符串解码,每题做详细思路梳理,配套PythonJava双语代码, 2024.04.02 可通过leetcode所有测试用例。 目录 349. 两个数组的交集 解题思路 完整代码 Python Java 387. 字符串中的第一个唯一字符 解题思路 完整代码 Python Java

    2024年04月08日
    浏览(16)
  • 算法训练第5天|哈希表理论基础 242.有效的字母异位词 349. 两个数组的交集 202. 快乐数 1. 两数之和

    算法训练第5天|哈希表理论基础 242.有效的字母异位词 349. 两个数组的交集 202. 快乐数 1. 两数之和

    哈希表是根据 关键码 的值而直接进行访问的数据结构。 一般哈希表都是用来快速判断一个元素是否出现集合里。 数组、集合set、映射map 力扣链接 题目描述: 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。 注意: 若  s  和  t   中每个字符出现的

    2024年02月19日
    浏览(16)
  • 力扣 | 哈希表1 | 242.有效的字母异位词,349.两个数组的交集,202.快乐数,1.两数之和

    力扣 | 哈希表1 | 242.有效的字母异位词,349.两个数组的交集,202.快乐数,1.两数之和

    目录 理论基础 242.有效的字母异位词 349.两个数组的交集 202.快乐数 1.两数之和 哈希表用来判断一个元素是否出现在集合里(判断一个元素是否出现过)。 牺牲空间换时间,会使用到额外的空间。 又称散列表,key-value,根据key值来访问 (数组就是简单的哈希表,但是数组的大

    2024年02月21日
    浏览(14)
  • Day 6 哈希表part01:242.有效的字母异位词 , 349. 两个数组的交集 , 202. 快乐数, 1. 两数之和

    Day 6 哈希表part01:242.有效的字母异位词 , 349. 两个数组的交集 , 202. 快乐数, 1. 两数之和

    哈希表理论基础  要了解哈希表的内部实现原理,哈希函数,哈希碰撞,以及常见哈希表的区别,数组,set 和map。   什么时候想到用哈希法,当我们遇到了 要快速判断一个元素是否出现集合里的时候 ,就要考虑 哈希法 。  这句话很重要,大家在做哈希表题目都要思考这

    2024年02月15日
    浏览(15)
  • ● day5:哈希表理论基础 242.有效的字母异位词   349. 两个数组的交集   202. 快乐数 1. 两数之和

    ● day5:哈希表理论基础 242.有效的字母异位词 349. 两个数组的交集 202. 快乐数 1. 两数之和

    ● 哈希表理论基础 ● 242.有效的字母异位词 ● 349. 两个数组的交集 ● 202. 快乐数 ● 1. 两数之和 哈希表理论基础 建议:大家要了解哈希表的内部实现原理,哈希函数,哈希碰撞,以及常见哈希表的区别,数组,set 和map。 什么时候想到用哈希法, 当我们遇到了要快速判断一

    2024年02月05日
    浏览(8)
  • 【代码随想录】Day6 哈希表理论基础 242.有效的字母异位词 ,349. 两个数组的交集 202. 快乐数 1. 两数之和

    【代码随想录】Day6 哈希表理论基础 242.有效的字母异位词 ,349. 两个数组的交集 202. 快乐数 1. 两数之和 新的一部分-哈希表,哈希表之前做题相对比较熟练希望能快速复习 Source: 题目 Note:以前刷的时候使用python字典,这次换做C++ 注意数组就是简单的哈希表,但是数组的大小

    2024年02月20日
    浏览(12)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包