Maximum Length of Subarray With Positive Product
곱셈의 법칙을 적절히 이용해야 한다. 짝수의 음수는 반듯이 짝수고 홀수개의 음수는 음수 이기 때문에 여기서 하나의 음수를 빼면 다시 짝수가 된다.
- 3개의 음수가 있으면 첫번째 음수를 제외하고 계산하면 되고
- 2개의 음수가 있으면 짝수처럼 처리 하면 된다.
var getMaxLen = function(nums) {
let firstNegative = -1;
let zeroPosition = -1;
let negativeCount = 0;
let max = 0;
for(let i = 0; i < nums.length; i++){
if(nums[i] < 0){
if(firstNegative < 0) {
firstNegative = i;
}
negativeCount++;
}
if(nums[i] == 0){
firstNegative = -1;
zeroPosition = i;
negativeCount = 0;
} else {
if(negativeCount%2){
max = Math.max(max,i - firstNegative);
} else {
max = Math.max(max,i - zeroPosition);
}
}
}
return max;
};
O(N), O(1)
728x90
반응형
'Problem Solving' 카테고리의 다른 글
완주하지 못한 선수 (0) | 2020.09.02 |
---|---|
크레인 인형뽑기 게임 (0) | 2020.09.01 |
1568. Minimum Number of Days to Disconnect Island (0) | 2020.09.01 |
Convert Sorted Array to Binary Search Tree (0) | 2020.08.27 |
Validate Binary Search Tree (0) | 2020.08.27 |