与对应负数同时存在的最大正整数【LC2441】
给你一个 不包含 任何零的整数数组 nums
,找出自身与对应的负数都在数组中存在的最大正整数 k
。
返回正整数 k
,如果不存在这样的整数,返回 -1
。
今天状态还可以 37.8
- 思路
使用哈希表记录每个数的出现状态,如果某个数的相反数已经出现过,那么该数的绝对值符合题意,取最大值返回即可 - 实现
class Solution { public int findMaxK(int[] nums) { int res = -1; Set<Integer> seen = new HashSet<>(); for (int num : nums){ if (seen.contains(-1 * num)){ res = Math.max(res,Math.abs(num)); } seen.add(num); } return res; } }
复杂度
- 时间复杂度:O(n)
- 空间复杂度:O(n)