leetcode2248_go_多个数组求交集

leetcode2248_go_多个数组求交集

首页休闲益智2248更新时间:2024-05-10
题目

给你一个二维整数数组 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] 中的所有值 互不相同

解题思路分析

1、哈希 排序;时间复杂度O(nlog(n)),空间复杂度O(n)

func intersection(nums [][]int) []int { m := make(map[int]int) for i := 0; i < len(nums); i { for j := 0; j < len(nums[i]); j { m[nums[i][j]] } } res := make([]int, 0) for k, v := range m { if v == len(nums) { res = append(res, k) } } sort.Ints(res) return res }

2、数组;时间复杂度O(n),空间复杂度O(n)

func intersection(nums [][]int) []int { arr := make([]int, 1001) for i := 0; i < len(nums); i { for j := 0; j < len(nums[i]); j { arr[nums[i][j]] } } res := make([]int, 0) for i := 1; i <= 1000; i { if arr[i] == len(nums) { res = append(res, i) } } return res }总结

Easy题目,借助map或者数组来判断计算

查看全文
大家还看了
也许喜欢
更多游戏

Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved