Leetcode1822. 数组元素积的符号(看起来很简单!本题判断积的符号即可!!!)

1822. 数组元素积的符号 - 力扣(LeetCode)

思路

  1. 如果数组中存在 0:乘积一定为 0,直接返回 0。

  2. 统计负数的个数:

负数个数为偶数 → 乘积为正 → 返回 1。

负数个数为奇数 → 乘积为负 → 返回 -1。

解题过程

一开始算了所有的积,但是提交时测试没通过,后来发现这个题目真的没必要把数组所有数的乘积算出来,判断乘积符号就可以了。

复杂度

时间复杂度: O(n)

空间复杂度: O(1)

核心代码

cpp 复制代码
class Solution {
public:
    int signFunc(int x){
        if(x>0){
            return 1;
        }else if(x<0){
            return -1;
        }else{
            return 0;
        }
    }
    int arraySign(vector<int>& nums) {
        int n=nums.size();
        int count_neg=0;
        for(int i=0;i<n;i++){
            if(nums[i]<0){// 统计负数个数
                count_neg++;
            }else if(nums[i]==0){// 有0,乘积为0
                return 0;
            }
        }
         // 根据负数个数的奇偶性返回结果
        return (count_neg%2==0)?1:-1;
    }
};
相关推荐
会编程的土豆32 分钟前
【日常做题】 代码随想录(岛屿最大面积+寻宝)
数据结构·算法·图论
前进吧-程序员34 分钟前
现代 C++ 异步编程:从零实现一个高性能 ThreadPool (C++20 深度实践)
开发语言·c++·c++20
阿洛学长38 分钟前
汉洛塔结构思维
算法
木子n144 分钟前
第2篇:坐标变换与数学基础:FOC算法的核心数学工具
算法·电机控制·foc
阿Y加油吧1 小时前
两道经典 DP 题:零钱兑换 & 单词拆分(完全背包 + 字符串 DP)
算法
pearlthriving1 小时前
c++当中的泛型思想以及c++11部分新特性
java·开发语言·c++
疯狂打码的少年1 小时前
有序线性表删除一个元素:顺序存储 vs 单链表,平均要移动多少个元素?
数据结构·算法·链表
y = xⁿ1 小时前
20天速通LeetCode day07:前缀和
数据结构·算法·leetcode
小雅痞2 小时前
[Java][Leetcode hard] 42. 接雨水
java·开发语言·leetcode
t***5442 小时前
Dev-C++中哪些选项可以设置
开发语言·c++