目录链接:
力扣编程题-解法汇总_分享+记录-CSDN博客
GitHub同步刷题项目:
https://github.com/September26/java-algorithms
原题链接:https://mp.csdn.net/mp_blog/creation/editor?spm=1001.2014.3001.5352
描述:
给你一个 不包含 任何零的整数数组 nums
,找出自身与对应的负数都在数组中存在的最大正整数 k
。
返回正整数 k
,如果不存在这样的整数,返回 -1
。
示例 1:
输入:nums = [-1,2,-3,3] 输出:3 解释:3 是数组中唯一一个满足题目要求的 k 。
示例 2:
public class Solution2441 {
public int findMaxK(int[] nums) {
Set<Integer> set = new HashSet<>();
for (int i : nums) {
if (i < 0) {
set.add(i);
}
}
int max = -1;
for (int i : nums) {
if (i < 0) {
continue;
}
if (set.contains(i * -1) && i > max) {
max = i;
}
}
return max;
}
}
输入: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] <= 1000
nums[i] != 0
解题思路:
* 解题思路: * 首先遍历nums,如果i<0,则加入到set中。 * 然后再次遍历,如果i>0并且i*-1存在于set中并且i>max,则设置max=i; * state:done
代码:
public class Solution2441 {
public int findMaxK(int[] nums) {
Set<Integer> set = new HashSet<>();
for (int i : nums) {
if (i < 0) {
set.add(i);
}
}
int max = -1;
for (int i : nums) {
if (i < 0) {
continue;
}
if (set.contains(i * -1) && i > max) {
max = i;
}
}
return max;
}
}