每日一题 11.10 数组元素积的符号

每日一题 11.10 数组元素积的符号

一、题目概述

有是一道简单题,然后这个是我从开始每日一题以来,第一个自己AC的题,数据也还不错。但是还是不能骄傲,因为肯定有比我的方法,复杂度更低,技巧性更高的方法,还是要继续学习才行。

这个题其实蛮简单的,真的很简单,只要找到规律就好,不用傻傻的算数据。

二、个人思路

题目问的是,最后所有数据的乘积的正负,那我们先来分析一下。

一串数据,有一个是0,那就全是0,直接返回0就行;

有奇数个负数,那最后结果是负数。返回-1;

有几个正数可以不用管,因为不影响返回值。

发现了这个规律,我们写这个题目就简单了很多,代码如下:

class Solution {
public:
    int arraySign(vector<int>& nums) {
        int flag=1;
        for(int i:nums){
            if(i==0){
                return 0;
            }else if(i>0){
                
            }else if(i<0){
                if(flag==-1){
                    flag=1;
                }else{
                    flag=-1;
                }
            }
        }
        return flag;
    }
};

复杂度如下:

三、大佬思路 

大佬的思路跟我一样,四舍五入我就是大佬。

然后官方题解补充了我的时间复杂度:

  • 时间复杂度:O(n),其中 n 为数组大小。

  • 空间复杂度:O(1)。

四、总结

做一些这样的题,我自信都上来了hhhh,但是我也知道这个题很简单,对了是应该的,没对才是我出大问题。

后面在思考,我在复习数学和期末考试的时候,我要不要也弄一个学习笔记,用于复盘,但是复盘必定会耽误一些时间。试试看吧,最近规划一下。

我们要期末考试了,还有半个多月吧,加油复习,希望考个好成绩。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值