跳到主要内容

2441.与对应负数同时存在的最大正整数

链接:2441.与对应负数同时存在的最大正整数
难度:Easy
标签:数组、哈希表、双指针、排序
简介:给你一个 不包含 任何零的整数数组 nums ,找出自身与对应的负数都在数组中存在的最大正整数 k 。返回正整数 k ,如果不存在这样的整数,返回 -1 。

题解 1 - 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;
}

题解 2 - 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;
}
};

题解 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
}
}