# 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

• class Solution {
public int maximumCount(int[] nums) {
int a = 0, b = 0;
for (int v : nums) {
if (v > 0) {
++a;
}
if (v < 0) {
++b;
}
}
return Math.max(a, b);
}
}

• class Solution {
public:
int maximumCount(vector<int>& nums) {
int a = 0, b = 0;
for (int& v : nums) {
if (v > 0) {
++a;
}
if (v < 0) {
++b;
}
}
return max(a, b);
}
};

• class Solution:
def maximumCount(self, nums: List[int]) -> int:
a = sum(v > 0 for v in nums)
b = sum(v < 0 for v in nums)
return max(a, b)


• func maximumCount(nums []int) int {
a, b := 0, 0
for _, v := range nums {
if v > 0 {
a++
}
if v < 0 {
b++
}
}
return max(a, b)
}

• function maximumCount(nums: number[]): number {
const count = [0, 0];
for (const num of nums) {
if (num < 0) {
count[0]++;
} else if (num > 0) {
count[1]++;
}
}
return Math.max(...count);
}


• impl Solution {
pub fn maximum_count(nums: Vec<i32>) -> i32 {
let mut count = [0, 0];
for &num in nums.iter() {
if num < 0 {
count[0] += 1;
} else if num > 0 {
count[1] += 1;
}
}
*count.iter().max().unwrap()
}
}