给你两个下标从 0 开始的整数数组 nums1
和 nums2
,它们分别含有 n
和 m
个元素。
请你计算以下两个数值:
- 统计
0 <= i < n
中的下标i
,满足nums1[i]
在nums2
中 至少 出现了一次。 - 统计
0 <= i < m
中的下标i
,满足nums2[i]
在nums1
中 至少 出现了一次。
请你返回一个长度为 2
的整数数组 answer
,按顺序 分别为以上两个数值。
示例 1:
输入:nums1 = [4,3,2,3,1], nums2 = [2,2,5,2,3,6] 输出:[3,4] 解释:分别计算两个数值: - nums1 中下标为 1 ,2 和 3 的元素在 nums2 中至少出现了一次,所以第一个值为 3 。 - nums2 中下标为 0 ,1 ,3 和 4 的元素在 nums1 中至少出现了一次,所以第二个值为 4 。
示例 2:
输入:nums1 = [3,4,2,3], nums2 = [1,5] 输出:[0,0] 解释:两个数组中没有公共元素,所以两个值都为 0 。
提示:
n == nums1.length
m == nums2.length
1 <= n, m <= 100
1 <= nums1[i], nums2[i] <= 100
我们可以用两个哈希表或数组
接下来,我们创建一个长度为
然后,我们遍历数组
最后,我们返回数组
时间复杂度
class Solution:
def findIntersectionValues(self, nums1: List[int], nums2: List[int]) -> List[int]:
s1, s2 = set(nums1), set(nums2)
return [sum(x in s2 for x in nums1), sum(x in s1 for x in nums2)]
class Solution {
public int[] findIntersectionValues(int[] nums1, int[] nums2) {
int[] s1 = new int[101];
int[] s2 = new int[101];
for (int x : nums1) {
s1[x] = 1;
}
for (int x : nums2) {
s2[x] = 1;
}
int[] ans = new int[2];
for (int x : nums1) {
ans[0] += s2[x];
}
for (int x : nums2) {
ans[1] += s1[x];
}
return ans;
}
}
class Solution {
public:
vector<int> findIntersectionValues(vector<int>& nums1, vector<int>& nums2) {
int s1[101]{};
int s2[101]{};
for (int& x : nums1) {
s1[x] = 1;
}
for (int& x : nums2) {
s2[x] = 1;
}
vector<int> ans(2);
for (int& x : nums1) {
ans[0] += s2[x];
}
for (int& x : nums2) {
ans[1] += s1[x];
}
return ans;
}
};
func findIntersectionValues(nums1 []int, nums2 []int) []int {
s1 := [101]int{}
s2 := [101]int{}
for _, x := range nums1 {
s1[x] = 1
}
for _, x := range nums2 {
s2[x] = 1
}
ans := make([]int, 2)
for _, x := range nums1 {
ans[0] += s2[x]
}
for _, x := range nums2 {
ans[1] += s1[x]
}
return ans
}
function findIntersectionValues(nums1: number[], nums2: number[]): number[] {
const s1: number[] = Array(101).fill(0);
const s2: number[] = Array(101).fill(0);
for (const x of nums1) {
s1[x] = 1;
}
for (const x of nums2) {
s2[x] = 1;
}
const ans: number[] = Array(2).fill(0);
for (const x of nums1) {
ans[0] += s2[x];
}
for (const x of nums2) {
ans[1] += s1[x];
}
return ans;
}