2441.与对应负数同时存在的最大正整数
链接:2441.与对应负数同时存在的最大正整数
难度:Easy
标签:数组、哈希表、双指针、排序
简介:给你一个 不包含 任何零的整数数组 nums ,找出自身与对应的负数都在数组中存在的最大正整数 k 。返回正整数 k ,如果不存在这样的整数,返回 -1 。
题解 1 - cpp
- 编辑时间:2023-05-13
- 执行用时:16ms
- 内存消耗:19.2MB
- 编程语言:cpp
- 解法介绍:数组存储。
class Solution {
public:
    int findMaxK(vector<int>& nums) {
        int list[2005] = {0}, res = -1;
        for (auto &num : nums) {
            list[num + 1000] += 1;
            if (list[-num + 1000]) res = max(res, abs(num));
        }
        return res;
    }
};
题解 2 - typescript
- 编辑时间:2022-10-16
- 执行用时:76ms
- 内存消耗:45.9MB
- 编程语言:typescript
- 解法介绍:哈希存储。
function findMaxK(nums: number[]): number {
    const set1 = new Set<number>();
    const set2 = new Set<number>();
    for (const num of nums) {
        if (set1.has(-num)) set2.add(Math.abs(num));
        set1.add(num);
    }
    return [...set2].sort((a, b) => b - a)[0] ?? -1;
}
题解 3 - python
- 编辑时间:2023-05-13
- 执行用时:76ms
- 内存消耗:16.2MB
- 编程语言:python
- 解法介绍:同上。
class Solution:
    def findMaxK(self, nums: List[int]) -> int:
        list = [0] * 2005
        res = -1
        for num in nums:
            list[num + 1000] += 1
            if list[-num + 1000]:
                res = max(res, abs(num))
        return res
题解 4 - rust
- 编辑时间:2023-05-13
- 执行用时:4ms
- 内存消耗:2MB
- 编程语言:rust
- 解法介绍:同上。
impl Solution {
    pub fn find_max_k(nums: Vec<i32>) -> i32 {
        let mut list = [0; 2005];
        let mut res = -1;
        for num in nums {
            list[(num + 1000) as usize] += 1;
            if list[(-num + 1000) as usize] != 0 {
                res = res.max(num.abs());
            }
        }
        res
    }
}