当前位置:网站首页>模拟卷Leetcode【普通】1567. 乘积为正数的最长子数组长度
模拟卷Leetcode【普通】1567. 乘积为正数的最长子数组长度
2022-07-07 06:18:00 【邂逅模拟卷】
1567. 乘积为正数的最长子数组长度
给你一个整数数组 nums ,请你求出乘积为正数的最长子数组的长度。
一个数组的子数组是由原数组中零个或者更多个连续数字组成的数组。
请你返回乘积为正数的最长子数组长度。
示例 1:
输入:nums = [1,-2,-3,4]
输出:4
解释:数组本身乘积就是正数,值为 24 。
示例 2:
输入:nums = [0,1,-2,-3,-4]
输出:3
解释:最长乘积为正数的子数组为 [1,-2,-3] ,乘积为 6 。
注意,我们不能把 0 也包括到子数组中,因为这样乘积为 0 ,不是正数。
示例 3:
输入:nums = [-1,-2,-3,0,1]
输出:2
解释:乘积为正数的最长子数组是 [-1,-2] 或者 [-2,-3] 。
示例 4:
输入:nums = [-1,2]
输出:1
示例 5:
输入:nums = [1,2,3,5,-6,4,0,10]
输出:4
提示:
1 <= nums.length <= 10^5
-10^9 <= nums[i] <= 10^9
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/maximum-length-of-subarray-with-positive-product
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
代码:
from leetcode_python.utils import *
class Solution:
def __init__(self):
""" 动态规划,保存正负最长的长度,对于每个数分>0,=0,<0三种情况: - >0: 正的长度+1,负的长度得看之前负的最长是不是0 - =0: 正负的长度都为0 - <0: 正的长度看之前负的,负的长度=之前正的+1 """
pass
def getMaxLen(self, nums: List[int]) -> int:
len_p, len_n = int(nums[0] > 0), int(nums[0] < 0)
res = len_p
for num in nums[1::]:
if num > 0:
len_p, len_n = len_p + 1, (len_n + 1 if len_n > 0 else 0)
elif num < 0:
len_p, len_n = (len_n + 1 if len_n > 0 else 0), len_p + 1
else:
len_p, len_n = 0, 0
res = max(res, len_p)
return res
def maxProduct_152_乘积最大子数组(self, nums: List[int]) -> int:
max_save,min_save,max_all =nums[0],nums[0],nums[0]
for i,num in enumerate(nums):
if i==0:continue
max_save,min_save = max(max(max_save*num,num),min_save*num),min(min(max_save*num,num),min_save*num)
return max(max_all,max_save)
def test(data_test):
s = Solution()
return s.getMaxLen(*data_test)
def test_obj(data_test):
result = [None]
obj = Solution(*data_test[1][0])
for fun, data in zip(data_test[0][1::], data_test[1][1::]):
if data:
res = obj.__getattribute__(fun)(*data)
else:
res = obj.__getattribute__(fun)()
result.append(res)
return result
if __name__ == '__main__':
datas = [
[[1,-2,-3,4]],
]
for data_test in datas:
t0 = time.time()
print('-' * 50)
print('input:', data_test)
print('output:', test(data_test))
print(f'use time:{
time.time() - t0}s')
备注:
GitHub:https://github.com/monijuan/leetcode_python
CSDN汇总:模拟卷Leetcode 题解汇总_卷子的博客-CSDN博客
可以加QQ群交流:1092754609
leetcode_python.utils详见汇总页说明
先刷的题,之后用脚本生成的blog,如果有错请留言,我看到了会修改的!谢谢!
边栏推荐
- Implement custom memory allocator
- 年薪50w阿裏P8親自下場,教你如何從測試進階
- 实现自定义内存分配器
- Find the original code, inverse code and complement of signed numbers [C language]
- RuntimeError: Calculated padded input size per channel: (1 x 1). Kernel size: (5 x 5). Kernel size c
- redis故障处理 “Can‘t save in background: fork: Cannot allocate memory“
- Tronapi-波场接口-源码无加密-可二开--附接口文档-基于ThinkPHP5封装-作者详细指导-2022年7月6日-新手快速上手-可无缝升级tp6版本
- 数字三角形模型 AcWing 275. 传纸条
- 数据分片介绍
- 最长上升子序列模型 AcWing 1017. 怪盗基德的滑翔翼
猜你喜欢

Routing information protocol rip

Calling the creation engine interface of Huawei game multimedia service returns error code 1002, error message: the params is error

Pointer advanced, string function

ESP32-ULP协处理器低功耗模式RTC GPIO中断唤醒

Download and install orcale database11.2.0.4

Nanjing commercial housing sales enabled electronic contracts, and Junzi sign assisted in the online signing and filing of housing transactions

NCS Chengdu Xindian interview experience

調用華為遊戲多媒體服務的創建引擎接口返回錯誤碼1002,錯誤信息:the params is error

联想混合云Lenovo xCloud:4大产品线+IT服务门户

Lenovo hybrid cloud Lenovo xcloud: 4 major product lines +it service portal
随机推荐
调用华为游戏多媒体服务的创建引擎接口返回错误码1002,错误信息:the params is error
Gson转换实体类为json时报declares multiple JSON fields named
为不同类型设备构建应用的三大更新 | 2022 I/O 重点回顾
The longest ascending subsequence model acwing 1017 Strange thief Kidd's glider
NCS Chengdu Xindian interview experience
阿里p8推荐,测试覆盖率工具—Jacoco,实用性极佳
MySQL partition explanation and operation statement
All about PDF crack, a complete solution to meet all your PDF needs
[南京大学]-[软件分析]课程学习笔记(一)-introduction
[Yu Yue education] higher vocational English reference materials of Nanjing Polytechnic University
Un salaire annuel de 50 W Ali P8 vous montrera comment passer du test
cmake命令行使用
Appeler l'interface du moteur de création du service multimédia de jeu Huawei renvoie le Code d'erreur 1002, le message d'erreur: les paramètres sont l'erreur
Vagrant failed to mount directory mount: unknown filesystem type 'vboxsf'
ncs成都新電面試經驗
Required String parameter ‘XXX‘ is not present
Greenplum6.x-版本变化记录-常用手册
let const
Count sort (diagram)
Data analysis methodology and previous experience summary 2 [notes dry goods]