1822. Sign of the Product of an Array

🟩 Easy

Implement a function signFunc(x) that returns:

  • 1 if x is positive.

  • -1 if x is negative.

  • 0 if x is equal to 0. You are given an integer array nums. Let product be the product of all values in the array nums.

Return signFunc(product).

Example 1

Input: nums = [-1,-2,-3,-4,3,2,1] Output: 2 Explanation: The product of all values in the array is 144, and signFunc(144) = 1

Example 2

Input: nums = [1,5,0,2,-3] Output: 0 Explanation: The product of all values in the array is 0, and signFunc(0) = 0

Example 3

Input: nums = [-1,1,-1,1,-1] Output: -1 Explanation: The product of all values in the array is -1, and signFunc(-1) = -1

Constraints

  • 1 <= nums.length <= 1000

  • -100 <= nums[i] <= 100

Hint-1

If there is a 0 in the array the answer is 0

Hint-2

To avoid overflow make all the negative numbers -1 and all positive numbers 1 and calculate the prod

Solution

My Solution

func arraySign(nums []int) int {
    var sign int8 = 1

    for _, v := range nums {
        if v == 0 {
            return 0
        }

        if v < 0 {
            sign *= -1
        } 
    }
    return int(sign)
}

Optimal solution

func arraySign(nums []int) int {
    negativeCount := 0

    // Loop through the array
    for _, num := range nums {
        if num == 0 {
            return 0 // If any number is 0, product will be 0
        }
        if num < 0 {
            negativeCount++ // Count negative numbers
        }
    }

    // If there are an odd number of negative numbers, the product is negative.
    if negativeCount % 2 == 0 {
        return 1 // Positive product
    }
    return -1 // Negative product
}
result

Leetcode: link

Last updated

Was this helpful?