持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第26天,点击查看活动详情
每日力扣是一个专门用来讲力扣中国每天发布的每日一题的栏目。本专栏不提供题目的解答源码,只讲解思路,目的是养成每日刷题、提高自己手感,从而达到算法熟练的目标。
题目(已做删减处理)
已知函数
signFunc(x)将会根据x的正负返回特定值:如果x是正数,返回1。如果x是负数,返回-1如果x是等于0,返回0。给你一个整数数组nums。令product为数组nums中所有元素值的乘积。返回signFunc(product)。
分析
这道题目大部分人第一时间想到的,肯定是直接对数组中的数据进行乘法操作,然后将得到的最后的结果进行判断。但是这样就带来了一个问题:没办法预测数据的范围。那也就导致了如果数组中有大数的话,很有可能导致最后的结果不对。
因此,我们需要从规律中解决。任何一个数字与0相乘,其结果也必然是0,因此如果数组中有0的话,直接返回0就可。使用tmp来记录数组中复数的个数。如果为奇数,说明最后的成绩肯定是个负数,返回-1即可;否则,返回1即可。
总结
一道很简单的算法题。这道题目并不涉及复杂的数据结构。甚至是一点都没有数据结构的影子,但是是一道特别适合学习的题目。之所以我这么喜欢这道题目,是因为它更代表性地显示了算法题应该有的解题思路:你如果不知道题目中的一些知识点,也可以通过比较暴力的手段解决。
我希望大家能够第一次就AC这道题目,如果你一开始没有想到更简单的解题方法,那希望你能够从这道题目中得到些思路。