Learning GoLang - Sign of the Product of an Array

in #programming3 years ago
There is 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: 1
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

GoLang: Sign Function of the Product of Numbers


We don't need to know the final product of all numbers in the array. We do only need to know if there is zero, or the number of negative numbers.

func arraySign(nums []int) int {    
    var c = 0
    for _, v := range nums {
        if v == 0 {
            return 0            
        } else if v < 0 {
            c += 1
        }
    }
    if (c & 1) == 1 {
        return -1
    }
    return 1
}

Time complexity O(N). Space complexity O(1). As we are not multiplying - thus there is no risk of integer overflow.

Reposted to Blog

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Thank you for reading ^^^^^^^^^^^^^^^

NEW! Following my Trail (Upvote or/and Downvote)

Follow me for topics of Algorithms, Blockchain and Cloud.
I am @justyy - a Steem Witness
https://steemyy.com

My contributions

Delegation Service

  1. Voting Algorithm Updated to Favor those High Delegations!
  • Delegate 1000 to justyy: Link
  • Delegate 5000 to justyy: Link
  • Delegate 10000 to justyy: Link

Support me

If you like my work, please:

  1. Delegate SP: https://steemyy.com/sp-delegate-form/?delegatee=justyy
  2. Vote @justyy as Witness: https://steemyy.com/witness-voting/?witness=justyy&action=approve
  3. Set @justyy as Proxy: https://steemyy.com/witness-voting/?witness=justyy&action=proxy
    Alternatively, you can vote witness or set proxy here: https://steemit.com/~witnesses

Sort:  

!shop

[WhereIn Android] (http://www.wherein.io)

你好鸭,justyy!

@dog-2022给您叫了一份外卖!

烧烤

吃饱了吗?跟我猜拳吧! 石头,剪刀,布~

如果您对我的服务满意,请不要吝啬您的点赞~

Hello dear friend @justyy good day
You do a great job of keeping our blockchain in order. Thank you
have a prosperous week

This post has been featured in the latest edition of Witness Weekly...

Coin Marketplace

STEEM 0.15
TRX 0.16
JST 0.028
BTC 67715.17
ETH 2423.95
USDT 1.00
SBD 2.37