# 【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++`