carloscn / structstudy

Leetcode daily trainning by using C/C++/RUST programming.
4 stars 1 forks source link

leetcode1822: Sign of the Product of an Array #291

Open carloscn opened 1 year ago

carloscn commented 1 year ago

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).

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

carloscn commented 1 year ago

Analysis

pub fn array_sign(nums: Vec<i32>) -> i32
{
    if nums.len() < 1 {
        return 0;
    }

    let ret:i32 = nums.iter().fold(1, | mut count, &x | {
        if x < 0 {
            count *= -1;
        } else if x == 0 {
            count = 0;
        }
        count
    });

    return ret;
}
carloscn commented 1 year ago

code

https://review.gerrithub.io/c/carloscn/structstudy/+/557037 https://github.com/carloscn/structstudy/commit/d3cc59dd0f50f1dd1c84abf6eb802e5b8f652dcb