Try   HackMD

【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

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++