Skip to content

Latest commit

 

History

History
59 lines (52 loc) · 2.26 KB

README.md

File metadata and controls

59 lines (52 loc) · 2.26 KB

Given an integer array nums that does not contain any zeros, find the largest positive integer k such that -k also exists in the array.

Return the positive integer k. If there is no such integer, return -1.

 

Example 1:

Input: nums = [-1,2,-3,3]
Output: 3
Explanation: 3 is the only valid k we can find in the array.

Example 2:

Input: nums = [-1,10,6,7,-7,1]
Output: 7
Explanation: Both 1 and 7 have their corresponding negative values in the array. 7 has a larger value.

Example 3:

Input: nums = [-10,8,6,7,-2,-3]
Output: -1
Explanation: There is no a single valid k, we return -1.

 

Constraints:

  • 1 <= nums.length <= 1000
  • -1000 <= nums[i] <= 1000
  • nums[i] != 0

Companies: Microsoft

Related Topics:
Array, Hash Table, Two Pointers, Sorting

Similar Questions:

Solution 1.

// OJ: https://leetcode.com/problems/largest-positive-integer-that-exists-with-its-negative
// Author: github.com/lzl124631x
// Time: O(NlogN)
// Space: O(1)
class Solution {
public:
    int findMaxK(vector<int>& A) {
        sort(begin(A), end(A));
        for (int i = 0, j = A.size() - 1; i < j && A[i] < 0 && A[j] > 0;) {
            if (-A[i] == A[j]) return A[j];
            if (-A[i] > A[j]) ++i;
            else --j;
        }
        return -1;
    }
};

We can have O(N) time O(D) space with counting sort.