2540-最小公共值

Raphael Liu Lv10

给你两个整数数组 nums1nums2 ,它们已经按非降序排序,请你返回两个数组的 最小公共整数 。如果两个数组 nums1
nums2 没有公共整数,请你返回 -1

如果一个整数在两个数组中都 至少出现一次 ,那么这个整数是数组 nums1nums2 公共 的。

示例 1:

**输入:** nums1 = [1,2,3], nums2 = [2,4]
**输出:** 2
**解释:** 两个数组的最小公共元素是 2 ,所以我们返回 2 。

示例 2:

**输入:** nums1 = [1,2,3,6], nums2 = [2,3,4,5]
**输出:** 2
**解释:** 两个数组中的公共元素是 2 和 3 ,2 是较小值,所以返回 2 。

提示:

  • 1 <= nums1.length, nums2.length <= 105
  • 1 <= nums1[i], nums2[j] <= 109
  • nums1nums2 都是 非降序 的。

Problem: 2540. 最小公共值

[TOC]

思路

两个指针分别从头开始遍历两个数组,每次小的那个数组指针增加,如果出现相等就记录下答案,指针都加一,然后判断这个相等的数是否唯一,唯一则为答案

解题方法

按照解题思路写代码循环寻找即可

复杂度

  • 时间复杂度:

    添加时间复杂度, 示例: O(n+m)n和m分别是两个数组的长度

  • 空间复杂度:

    添加空间复杂度, 示例: O(1)

Code

[]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

class Solution {
public:
int getCommon(vector<int>& nums1, vector<int>& nums2) {
int n1 = nums1.size(),n2 = nums2.size();
int i = 0,j = 0,ans = -1;
while(i<n1&&j<n2){
if(ans!=-1&&ans!=nums1[i]&&ans!=nums2[j]){
return ans;
}
if(nums1[i]==nums2[j]){
ans = nums1[i];
i++;
j++;
}
else if(nums1[i]<nums2[j]){
i++;
}
else{
j++;
}
}
return ans;
}
};
 Comments
On this page
2540-最小公共值