【LetMeFly】3131.找出与数组相加的整数 I:最小值之差(多语言一行版)
力扣题目链接:https://leetcode.cn/problems/find-the-integer-added-to-array-i/
给你两个长度相等的数组 nums1
和 nums2
。
数组 nums1
中的每个元素都与变量 x
所表示的整数相加。如果 x
为负数,则表现为元素值的减少。
在与 x
相加后,nums1
和 nums2
相等 。当两个数组中包含相同的整数,并且这些整数出现的频次相同时,两个数组 相等 。
返回整数 x
。
示例 1:
输入:nums1 = [2,6,4], nums2 = [9,7,5]
输出:3
解释:
与 3 相加后,nums1
和 nums2
相等。
示例 2:
输入:nums1 = [10], nums2 = [5]
输出:-5
解释:
与 -5
相加后,nums1
和 nums2
相等。
示例 3:
输入:nums1 = [1,1,1,1], nums2 = [1,1,1,1]
输出:0
解释:
与 0 相加后,nums1
和 nums2
相等。
提示:
1 <= nums1.length == nums2.length <= 100
0 <= nums1[i], nums2[i] <= 1000
- 测试用例以这样的方式生成:存在一个整数
x
,使得nums1
中的每个元素都与x
相加后,nums1
与nums2
相等。
解题方法:模拟
本题没有说“若不存在这样的x返回-1”之类的,也就是说这样的x一定存在。一定存在一个x,使得nums1中的任何一个数加上x后都与nums2中的一个数对应。
那么,nums1中最小的数加上x后是不是一定与nums2中最小的数对应?也就是说,只需要用nums2中最小的数减去nums1中最小的数,就能反向计算出x。
- 时间复杂度 O ( l e n ( n u m s 1 ) ) O(len(nums1)) O(len(nums1))
- 空间复杂度 O ( 1 ) O(1) O(1)
AC代码
C++
class Solution {
public:
int addedInteger(vector<int>& nums1, vector<int>& nums2) {
return *min_element(nums2.begin(), nums2.end()) - *min_element(nums1.begin(), nums1.end());
}
};
Python
from typing import List
class Solution:
def addedInteger(self, nums1: List[int], nums2: List[int]) -> int:
return min(nums2) - min(nums1)
Java
class Solution {
private int min(int[] nums) {
int ans = nums[0];
for (int i = 1; i < nums.length; i++) {
ans = Math.min(ans, nums[i]);
}
return ans;
}
public int addedInteger(int[] nums1, int[] nums2) {
return min(nums2) - min(nums1);
}
}
Go
// package main
// import "slices"
func addedInteger(nums1 []int, nums2 []int) int {
return slices.Min(nums2) - slices.Min(nums1)
}
同步发文于CSDN和我的个人博客,原创不易,转载经作者同意后请附上原文链接哦~
Tisfy:https://letmefly.blog.csdn.net/article/details/141037760