1822.Sign of the Product of an Array === ###### tags: `Easy`,`Array`,`Math` [1822. Sign of the Product of an Array](https://leetcode.com/problems/sign-of-the-product-of-an-array/) ### 題目描述 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 ### 解答 #### Python ```python= class Solution: def arraySign(self, nums: List[int]) -> int: return 1 if reduce(lambda x, y: x * y, nums) > 0 else -1 if reduce(lambda x, y: x * y, nums) < 0 else 0 ``` > [name=Ron Chen][time=Tue, May 2, 2023] #### Javascript ```javascript= function arraySign(nums) { let count = 0; for (const num of nums) { if (num === 0) return 0; if (num < 0) count++; } if (count % 2 === 0) return 1; return -1; } ``` > [name=Marsgoat][time=Tue, May 2, 2023] #### C# ```csharp= public int ArraySign(int[] nums) { return nums.Aggregate(1, (dot, num) => dot * ((num >> 31) - ((-num) >> 31))); } ``` > [name=Jim][time=Wed, May 3, 2023] ### Reference [回到題目列表](https://hackmd.io/@Marsgoat/leetcode_every_day)