题目描述:
给你一个 不包含 任何零的整数数组 nums ,找出自身与对应的负数都在数组中存在的最大正整数 k 。
返回正整数 k ,如果不存在这样的整数,返回 -1 。
来源:力扣(LeetCode)
示例:
输入:nums = [-1,2,-3,3] 输出:3 解释:3 是数组中唯一一个满足题目要求的 k 。
思路:将数组排升序,分别使用两个下标low 、higt,当满足nums[low]+nums[higt] == 0; 时我们就找到了最大的数了,记得返回正数nums[higt];
class Solution {
public:
int findMaxK(vector<int>& nums) {
int l_num=nums.size();
int i=0,j=l_num-1;
sort(nums.begin(),nums.end());//sort排序
while(nums[i]<0&&nums[j]>0)
{
if(nums[i]+nums[j]==0) //配对成功
return nums[j];
else if(nums[i]+nums[j]<0) //负数太小了
i++;
else j--; //正数太大了
}
return -1;
}
};