给你一个二维整数数组 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