
문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음
오름차순으로 정렬된 배열 nums가 주어지고, 양의 정수의 개수와 음의 정수 개수 중 더 큰 값을 반환해라.
#1
Input: nums = [-2, -1, -1, 1, 2, 3]
Output: 3
#2
Input: nums = [-3, -2, -1, 0, 0, 1, 2]
Output: 3
#3
Input: nums = [5, 20, 66, 1314]
Output: 4
class Solution {
public int maximumCount(int[] nums) {
int n = nums.length;
int left = 0;
int right = n - 1;
int neg = 0;
int pos = 0;
while(left <= right){
int mid = left + (right - left) / 2;
if(nums[mid] < 0){
neg = mid + 1;
left = mid + 1;
}else{
right = mid - 1;
}
}
left = 0;
right = n - 1;
while(left <= right){
int mid = left + (right - left) / 2;
if(nums[mid] > 0){
pos = n - mid;
right = mid - 1;
}else{
left = mid + 1;
}
}
return Math.max(neg, pos);
}
}