# 【LeetCode】 1822. Sign of the Product of an Array ## Description > 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)`. > Constraints: > * `1 <= nums.length <= 1000` > * `-100 <= nums[i] <= 100` > 這裡有一個函式 `signFunc(x)` 回傳: > * 如果 `x` 是正數回傳 `1`。 > * 如果 `x` 是負數回傳 `-1`。 > * 如果 `x` 等於 `0` 回傳 `0`。 > 你會收到一個整數陣列 `nums`。讓 `product` 成為所有陣列 `nums` 值的乘積。 > 回傳 `signFunc(product)`。 > 限制: > * `1 <= nums.length <= 1000` > * `-100 <= nums[i] <= 100` ## Example: ``` 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 ``` ## Solution * 乘積只會受到正數負數影響,因此不用考慮數值大小 * 用一個變數紀錄目前乘積的正負,遍歷一次陣列 * 只要遇到 `0` 乘積必定為 `0` * 負號的話則是將正負相反 ### Code ```C++=1 class Solution { public: int arraySign(vector<int>& nums) { int sign = 1; for(int i = 0; i < nums.size(); i++) { if(nums[i] == 0) return 0; else if(nums[i] < 0) sign *= -1; } return sign; } }; ``` ###### tags: `LeetCode` `C++`