2441. 与对应负数同时存在的最大正整数
2441. 与对应负数同时存在的最大正整数
给你一个 不包含 任何零的整数数组 nums ,找出自身与对应的负数都在数组中存在的最大正整数 k 。
返回正整数k ,如果不存在这样的整数,返回 -1 。
示例 1:
输入:nums = [-1,2,-3,3] 输出:3 解释:3 是数组中唯一一个满足题目要求的 k 。
示例 2:
输入:nums = [-1,10,6,7,-7,1] 输出:7 解释:数组中存在 1 和 7 对应的负数,7 的值更大。
示例 3:
输入:nums = [-10,8,6,7,-2,-3] 输出:-1 解释:不存在满足题目要求的 k ,返回 -1 。
提示:
1 <= nums.length <= 1000-1000 <= nums[i] <= 1000nums[i] != 0
思路:首先排序,然后将所有正数放入set中,接着遍历负数,如果set中存在取反后相等的正数即返回,从下标0开始遍历负数(已经排序了)
class Solution { public int findMaxK(int[] nums) { Set<Integer> set = new HashSet<>(); Arrays.sort(nums); int idx = 0; for (int i = nums.length-1;i >= 0;--i) { if (nums[i] < 0) { break; } set.add(nums[i]); idx = i; } for (int i = 0;i < idx;i++) { if (set.contains(Math.abs(nums[i]))) { return Math.abs(nums[i]); } } return -1; } }
浙公网安备 33010602011771号