Sponsored
Sponsored
This approach involves scanning through the array once to check for any zeros and counting the number of negative numbers. If there's a zero, the product is zero. Otherwise, if the number of negative numbers is odd, the product is negative; if even, the product is positive.
Time Complexity: O(n), where n is the number of elements in the array. We only need to pass over the array once.
Space Complexity: O(1), as no additional space beyond the given variables is used.
1#include <stdio.h>
2
3int arraySign(int* nums, int numsSize) {
4 int negative_count = 0;
5 for (int i = 0; i < numsSize; i++) {
6 if (nums[i] == 0) return 0;
7 if (nums[i] < 0) negative_count++;
8 }
9 return (negative_count % 2 == 0) ? 1 : -1;
10}
11
12int main() {
13 int nums[] = {-1, -2, -3, -4, 3, 2, 1};
14 int size = sizeof(nums) / sizeof(nums[0]);
15 printf("%d\n", arraySign(nums, size));
16 return 0;
17}
The C solution uses a loop to iterate over the array. If a zero is found immediately return zero, otherwise count the number of negative integers. If the count is even, return 1. If odd, return -1.
This approach uses a multiplicative identity set as variable 'sign', initialized to 1. Then iterates through each element of the array, multiplying 'sign' with -1 for each negative number and returning zero if a zero is found.
Time Complexity: O(n)
Space Complexity: O(1)
1function
In JavaScript, similar logic applied to determine product sign, efficient sign multiplication progresses and zero detection halts further computation, returning zero straightaway.