6041. 多个数组求交集

给你一个二维整数数组 nums ,其中 nums[i] 是由 不同 正整数组成的一个非空数组,按 升序排列 返回一个数组,数组中的每个元素在 nums 所有数组 中都出现过。

示例 1:

输入:nums = [[3,1,2,4,5],[1,2,3,4],[3,4,5,6]]
输出:[3,4]
解释:
nums[0] = [3,1,2,4,5],nums[1] = [1,2,3,4],nums[2] = [3,4,5,6],在 nums 中每个数组中都出现的数字是 3 和 4 ,所以返回 [3,4] 。

示例 2:

输入:nums = [[1,2,3],[4,5,6]]
输出:[]
解释:
不存在同时出现在 nums[0] 和 nums[1] 的整数,所以返回一个空列表 [] 。

提示:

  • 1 <= nums.length <= 1000
  • 1 <= sum(nums[i].length) <= 1000
  • 1 <= nums[i][j] <= 1000
  • nums[i] 中的所有值 互不相同

AC CODE:

class Solution {
public:
    vector<int> intersection(vector<vector<int>>& nums) {
    map<int,int> countNum;
    for(vector<int>& num: nums)
    {
        for(int x: num)
        {
            countNum[x]++;
        }
    }

    vector<int> res;
    for(pair<int, int> countPair: countNum)
    {
        if(countPair.second == nums.size())
        {
            res.push_back(countPair.first);
        }
    }
    return res;

    }
};

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要获取数组交集,可以使用 PHP 内置函数 `array_intersect`,这个函数可以获取两个或多个数组交集。 例如,要获取两个一维数组 `$arr1` 和 `$arr2` 的交集,可以这样写: ```php $arr1 = array('apple', 'banana', 'orange'); $arr2 = array('banana', 'pear', 'orange'); $result = array_intersect($arr1, $arr2); print_r($result); ``` 输出: ``` Array ( [1] => banana [2] => orange ) ``` 要获取多维数组交集,可以使用递归函数实现,比如这个函数: ```php function multi_array_intersect($arrays) { if (count($arrays) == 1) { return $arrays[0]; } $first = array_shift($arrays); $intersect = array(); foreach ($first as $value) { foreach ($arrays as $key => $array) { if (!is_array($array)) { $array = array($array); } $arrays[$key] = array_values($array); $found = false; foreach ($array as $subvalue) { if (is_array($value) && is_array($subvalue)) { if (multi_array_intersect(array($value, $subvalue)) === $value) { $found = true; break; } } else if ($value === $subvalue) { $found = true; break; } } if (!$found) { continue 2; } } $intersect[] = $value; } return $intersect; } ``` 这个函数可以接受一个多维数组作为参数,返回这些数组交集。例如: ```php $arr1 = array( array('name' => 'apple', 'color' => 'red'), array('name' => 'banana', 'color' => 'yellow'), array('name' => 'orange', 'color' => 'orange') ); $arr2 = array( array('name' => 'banana', 'color' => 'yellow'), array('name' => 'pear', 'color' => 'green'), array('name' => 'orange', 'color' => 'orange') ); $result = multi_array_intersect(array($arr1, $arr2)); print_r($result); ``` 输出: ``` Array ( [0] => Array ( [name] => banana [color] => yellow ) [1] => Array ( [name] => orange [color] => orange ) ) ``` 注意,这个函数的实现方式比较复杂,因此在处理大量数据时可能会比较慢。如果需要处理大量数据,可以考虑其他更高效的算法

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值