当前位置:网站首页>模拟卷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,如果有错请留言,我看到了会修改的!谢谢!
边栏推荐
- 使用AGC重签名服务前后渠道号信息异常分析
- Rapid integration of authentication services - harmonyos platform
- The longest ascending subsequence model acwing 1017 Strange thief Kidd's glider
- About using CDN based on Kangle and EP panel
- Category of IP address
- Sign and authenticate API interface or H5 interface
- [wechat applet: cache operation]
- Image segmentation in opencv
- [Yugong series] February 2022 U3D full stack class 005 unity engine view
- Analysis of abnormal channel number information before and after AGC re signature service
猜你喜欢
LeetCode 715. Range module
Markdown editor Use of MD plug-in
如何在HarmonyOS应用中集成App Linking服务
LeetCode 736. Lisp 语法解析
Greenplum6.x重新初始化
opencv之图像分割
ncs成都新電面試經驗
NCS Chengdu Xindian interview experience
Analysis of using jsonp cross domain vulnerability and XSS vulnerability in honeypot
What is the method of manual wiring in PCB design in 22protel DXP_ Chengdu electromechanical Development Undertaking
随机推荐
oracle一次性说清楚,多种分隔符的一个字段拆分多行,再多行多列多种分隔符拆多行,最终处理超亿亿。。亿级别数据量
数据分片介绍
[Nanjing University] - [software analysis] course learning notes (I) -introduction
【MySQL】数据库进阶之触发器内容详解
About using CDN based on Kangle and EP panel
模拟卷Leetcode【普通】1557. 可以到达所有点的最少点数目
Gson converts the entity class to JSON times declare multiple JSON fields named
快速集成认证服务-HarmonyOS平台
Frequently Asked Coding Problems
調用華為遊戲多媒體服務的創建引擎接口返回錯誤碼1002,錯誤信息:the params is error
模拟卷Leetcode【普通】1705. 吃苹果的最大数目
[Yugong series] February 2022 U3D full stack class 007 - production and setting skybox resources
使用AGC重签名服务前后渠道号信息异常分析
let const
Problems encountered in the use of go micro
Three series of BOM elements
Data analysis methodology and previous experience summary 2 [notes dry goods]
Routing information protocol rip
Implement custom memory allocator
selenium自动化集成,八年测试经验软测工程师,一篇文章带你学懂