基础刷题50之八(数组元素积的符号)


前言

刚上研一,有人劝我好好学C++,当时用的不多就没学,现在毕业上班了。在此亡羊补牢了
在此感谢力扣和文心一言

一、题目

数组元素积的符号
已知函数 signFunc(x) 将会根据 x 的正负返回特定值:
如果 x 是正数,返回 1 。
如果 x 是负数,返回 -1 。
如果 x 是等于 0 ,返回 0 。
给你一个整数数组 nums 。令 product 为数组 nums 中所有元素值的乘积。
返回 signFunc(product) 。

在这里插入图片描述

二、力扣官方解释

class Solution {
public:
    int arraySign(vector<int>& nums) {
        int sign = 1;
        for (auto num : nums) {
            if (num == 0) {
                return 0;
            }
            if (num < 0) {
                sign = -sign;
            }
        }
        return sign;
    }
};

文心一言解释

这段代码是一个C++类的实现,它包含一个公共方法arraySign。这个方法接受一个整数向量nums作为输入,并返回一个整数。它的目的是根据输入向量中的元素来返回一个表示“符号”的整数。

具体来说,这个方法的逻辑是这样的:

初始化一个变量sign为1,用于存储最终的符号。
遍历向量nums中的每一个元素。
如果在遍历过程中遇到0,方法会立即返回0,因为0在数学中没有明确的正负符号。
如果在遍历过程中遇到负数,就将sign的值取反(即乘以-1)。这样,如果nums中有偶数个负数,sign的值最终仍然是正数;如果有奇数个负数,sign的值最终是负数。
如果遍历完整个向量nums都没有返回,那么最后返回sign的值。
总结起来,这个方法的功能是:

如果向量nums中包含0,则返回0。
如果向量nums中不包含0,但包含偶数个负数,则返回1(表示正数)。
如果向量nums中不包含0,但包含奇数个负数,则返回-1(表示负数)。
这个方法在处理只包含正数或只包含负数的向量时也能正确工作,因为对于正数,sign的值不会被改变;对于负数,sign的值会根据负数的数量进行取反。

总结

在 for (auto num : nums) 中:

auto 是一个自动类型推导关键字,它告诉编译器自动根据nums中元素的类型来推断num的类型。
num 是循环中使用的变量,它将依次被赋值为nums中的每一个元素。
nums 是要被遍历的容器。
早学早烧脑,晚学来后悔

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值