两个数组的交集-C语言/Java

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

描述

        给定两个数组 nums1 和 nums2 ,返回 它们的交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序。(1 <= nums1.length, nums2.length <= 1000,0 <= nums1[i], nums2[i] <= 1000)

示例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] 也是可通过的

       思路:新建一个数组,将输入的一个数组的值作为新建数组的下标,相应下标i的新建数组的值设为1,表示数i的个数有1个,如果输入的另一个数组的值,在新建的数组的对应下标的数组值为1,将其数值设为2,表明数i在输入的两个数组中都有,再将新建数组中值为2的下标放入新数组中。

两个数组的交集-C语言/Java,c语言,java,算法

 

        C语言

int* intersection(int* nums1, int nums1Size, int* nums2, int nums2Size, int* returnSize){

        int* arr=(int*)malloc(sizeof(int)*1000);

        //两个集合相同元素的个数

        int count=0;

        for(int i=0;i<nums1Size;i++)

        {

                arr[nums1[i]]=1;

        }

        for(int i=0;i<nums2Size;i++)

        {

            //num2[i]为两个数组共有元素

            if(arr[nums2[i]]==1)

            {

                arr[nums2[i]]=2;

                count++;

            }

        }

        *returnSize=count;

        //存放两个数组的集合

        int* p=(int*)malloc(sizeof(int)*(nums1Size>nums2Size?nums1Size:nums2Size));

        int j=0;

        for(int i=0;i<1000;i++)

        {

            if(arr[i]==2)

            {

                p[j++]=i;

                count--;

            }

            if(count==0)

            break;

        }

        return p;

}

        Java

class Solution {
    public int[] intersection(int[] nums1, int[] nums2) {
    int[] temp = new int[1001];
        for (int i = 0; i < nums1.length; i++) {
            if (temp[nums1[i]]==0) temp[nums1[i]]=1;
        }
        int num = 0;
        for (int i = 0; i < nums2.length; i++) {
            if (temp[nums2[i]]==1){
                temp[nums2[i]]=2;
                num++;
            } 
        }
        int[] res = new int[num];
        for (int i = 0; i < 1001; i++) {
            if (temp[i]==2){
                res[--num] = i;
            }
        }
        return res;    
    }
}文章来源地址https://www.toymoban.com/news/detail-671991.html

到了这里,关于两个数组的交集-C语言/Java的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • java 获取两个List集合的交集

    可以使用Java中的retainAll方法来获取两个List的交集: 假设有两个List类型的集合list1和list2,代码如下: 下面是获取两个集合的交集的代码: 输出结果为: 其中,retainAll方法会修改intersection集合,使其只包含两个集合的交集。在这个例子中,intersection集合最初是包含list1集合的

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

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

    2024年02月19日
    浏览(45)
  • Java 判断两个IP段是否有交集

    一、背景介绍 在有些场景,需要判断IP段是否有交集,比如:配置一些设备的过滤规则,避免IP段重复配置,需要做IP段是否重叠的校验。 IP段有交集的场景有几种: 1)IP段1包含IP段2; 2)IP段2包含IP段1; 3)IP段1的起始IP与IP段2的结束IP相同,或者IP段1的结束IP与IP段2的起始

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

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

    2024年04月08日
    浏览(36)
  • 两个数组的交集(LeetCode 349)

    题目 349. 两个数组的交集  思路         将较长的序列放入一个set后,再加入短序列的数字,判断当前数字是否添加成功,如果添加成功则表示set中没有该数字,则不属于两个数组之间的交集,将该数字从set中移除(移除是因为保证set的纯洁性 即只含有长序列中的数字);

    2024年02月11日
    浏览(57)
  • 两个数组的交集(力扣刷题)

            给定两个数组  nums1  和  nums2  ,返回  它们的交集  。输出结果中的每个元素一定是  唯一  的。我们可以  不考虑输出结果的顺序  。 来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/intersection-of-two-arrays   说明:  输出结果中的每个元素一定是唯一的。

    2023年04月09日
    浏览(43)
  • 【力扣】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日
    浏览(40)
  • LeetCode349. 两个数组的交集

    数组哈希.无序set都可以 给定两个数组 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月23日
    浏览(35)
  • php 两个数组取交集、并集、差集

    php 两个数组取交集、并集、差集 交集:array_intersect() 并集:array_merge() 差集:array_diff() laravel 两个集合取交集、并集、差集 交集: 使用intersect()函数,用于获取两个集合的交集: 并集:使用union()函数,用于获取两个集合的并集: 差集:使用diff()函数,用于获取两个集合的

    2024年02月12日
    浏览(47)
  • Java使用不同方式获取两个集合List的交集、补集、并集(相加)、差集(相减)

    首先知道几个单词的意思: 并集 = union 交集 = intersection 补集 = complement 析取 = disjunction 减去 = subtract 对于两个给定集合A、B,由两个集合所有元素构成的集合,叫做A和B的并集。 记作:AUB 读作“A并B” 例:{3,5}U{2,3,4,6}= {2,3,4,5,6} 对于两个给定集合A、B,由属于A又属于B的所有元

    2024年01月22日
    浏览(57)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包