LeetCode 2529. Maximum Count of Positive Integer and Negative Integer Solution in Java, C++, Python & More | Explanation + Code

CoderIndeed
0
2529. Maximum Count of Positive Integer and Negative Integer

Description

Given an array nums sorted in non-decreasing order, return the maximum between the number of positive integers and the number of negative integers.

  • In other words, if the number of positive integers in nums is pos and the number of negative integers is neg, then return the maximum of pos and neg.

Note that 0 is neither positive nor negative.

 

Example 1:

Input: nums = [-2,-1,-1,1,2,3]
Output: 3
Explanation: There are 3 positive integers and 3 negative integers. The maximum count among them is 3.

Example 2:

Input: nums = [-3,-2,-1,0,0,1,2]
Output: 3
Explanation: There are 2 positive integers and 3 negative integers. The maximum count among them is 3.

Example 3:

Input: nums = [5,20,66,1314]
Output: 4
Explanation: There are 4 positive integers and 0 negative integers. The maximum count among them is 4.

 

Constraints:

  • 1 <= nums.length <= 2000
  • -2000 <= nums[i] <= 2000
  • nums is sorted in a non-decreasing order.

 

Follow up: Can you solve the problem in O(log(n)) time complexity?

Solutions

Solution 1: Traversal

We can directly traverse the array, count the number of positive and negative integers a and b, and return the larger of a and b.

The time complexity is O(n), where n is the length of the array. The space complexity is O(1).

PythonJavaC++GoTypeScriptRustC
class Solution: def maximumCount(self, nums: List[int]) -> int: a = sum(x > 0 for x in nums) b = sum(x < 0 for x in nums) return max(a, b)(code-box)

Solution 2: Binary Search

Since the array is sorted in non-decreasing order, we can use binary search to find the index i of the first element that is greater than or equal to 1, and the index j of the first element that is greater than or equal to 0. The number of positive integers is a = n - i, and the number of negative integers is b = j. We return the larger of a and b.

The time complexity is O(log n), where n is the length of the array. The space complexity is O(1).

PythonJavaC++GoTypeScriptRustC
class Solution: def maximumCount(self, nums: List[int]) -> int: a = len(nums) - bisect_left(nums, 1) b = bisect_left(nums, 0) return max(a, b)(code-box)

Post a Comment

0Comments

Post a Comment (0)

#buttons=(Accept !) #days=(20)

Our website uses cookies to enhance your experience. Check Now
Accept !