3131.找出与数组相加的整数 I

【LetMeFly】3131.找出与数组相加的整数 I:最小值之差(多语言一行版)

力扣题目链接:https://leetcode.cn/problems/find-the-integer-added-to-array-i/

给你两个长度相等的数组 nums1nums2

数组 nums1 中的每个元素都与变量 x 所表示的整数相加。如果 x 为负数,则表现为元素值的减少。

在与 x 相加后,nums1nums2 相等 。当两个数组中包含相同的整数,并且这些整数出现的频次相同时,两个数组 相等

返回整数 x

 

示例 1:

输入:nums1 = [2,6,4], nums2 = [9,7,5]

输出:3

解释:

与 3 相加后,nums1nums2 相等。

示例 2:

输入:nums1 = [10], nums2 = [5]

输出:-5

解释:

-5 相加后,nums1nums2 相等。

示例 3:

输入:nums1 = [1,1,1,1], nums2 = [1,1,1,1]

输出:0

解释:

与 0 相加后,nums1nums2 相等。

 

提示:

  • 1 <= nums1.length == nums2.length <= 100
  • 0 <= nums1[i], nums2[i] <= 1000
  • 测试用例以这样的方式生成:存在一个整数 x,使得 nums1 中的每个元素都与 x 相加后,nums1nums2 相等。

解题方法:模拟

本题没有说“若不存在这样的x返回-1”之类的,也就是说这样的x一定存在。一定存在一个x,使得nums1中的任何一个数加上x后都与nums2中的一个数对应。

那么,nums1中最小的数加上x后是不是一定与nums2中最小的数对应?也就是说,只需要用nums2中最小的数减去nums1中最小的数,就能反向计算出x。

  • 时间复杂度$O(len(nums1))$
  • 空间复杂度$O(1)$

AC代码

C++

1
2
3
4
5
6
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

1
2
3
4
5
from typing import List

class Solution:
def addedInteger(self, nums1: List[int], nums2: List[int]) -> int:
return min(nums2) - min(nums1)

Java

1
2
3
4
5
6
7
8
9
10
11
12
13
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

1
2
3
4
5
6
7
// 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


3131.找出与数组相加的整数 I
https://blog.letmefly.xyz/2024/08/08/LeetCode 3131.找出与数组相加的整数I/
作者
Tisfy
发布于
2024年8月8日
许可协议