当前位置: 首页 > news >正文

目前旅游网站开发网站流量统计查询

目前旅游网站开发,网站流量统计查询,木马设计公司官网,网站怎么做图片轮播题目链接 Leetcode.1567 乘积为正数的最长子数组长度 Rating : 1710 题目描述 给你一个整数数组 nums,请你求出乘积为正数的最长子数组的长度。 一个数组的子数组是由原数组中零个或者更多个连续数字组成的数组。 请你返回乘积为正数的最长子数组长度…

题目链接

Leetcode.1567 乘积为正数的最长子数组长度 Rating : 1710

题目描述

给你一个整数数组 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] 。

提示:

  • 1<=nums.length<=1051 <= nums.length <= 10^51<=nums.length<=105
  • −109<=nums[i]<=109-10^9 <= nums[i] <= 10^9109<=nums[i]<=109

分析:

首先,要想子数组的乘积为正数,那么子数组里面一定不包含 0,而且负数的个数为偶数

  • 我们用 positive记录 正数 的个数
  • 我们用negative记录 负数 的个数
  • 我们用neg_pos(初始为 -1)记录 第一个负数出现的位置

在遍历的过程中,会遇到以下三种情况:

  • nums[i] > 0,遇到正数 positive+1
  • nums[i] < 0,遇到负数 negative+1,如果此时 neg_pos == -1,说明 nums[i]是目前遇到的第一个负数,更新 neg_pos = i
  • nums[i] == 0,遇到 0positve重置为 0negative重置为 0neg_pos重置为 -1。相当于 0把每一个合法的子数组都截开了。

在更新答案ans的时候:

  • 如果当前子数组中的负数个数是偶数个,即 negative % 2 == 0ans = max(ans , positive + negative),即当前整个子数组乘积都是正数。
  • 如果当前子数组中的负数个数是奇数个,即 negative % 2 != 0,那么当前子数组就需要剔除一个负数来保证整个子数组乘积为正数,我们就选择剔除 第一个出现的负数。即 ans = max(ans , i - neg_pos),剔除了 下标为neg_pos的负数。

时间复杂度:O(n)O(n)O(n)

C++代码:

class Solution {
public:int getMaxLen(vector<int>& nums) {int positive = 0,negative = 0,neg_pos = -1;int ans = 0;int n = nums.size();for(int i = 0;i < n;i++){int x = nums[i];if(x > 0) positive++;else if(x < 0){negative++;if(neg_pos == -1) neg_pos = i;}else{positive = 0;negative = 0;neg_pos = -1;}if(negative % 2 == 0) ans = max(ans,negative + positive);else ans = max(ans,i - neg_pos);}return ans;}
};

Java代码:

class Solution {public int getMaxLen(int[] nums) {int positive = 0;int negative = 0;int neg_pos = -1;int n = nums.length;int ans = 0;for(int i = 0;i < n;i++){int x = nums[i];if(x > 0) positive++;else if(x < 0){negative++;if(neg_pos == -1) neg_pos = i;}else{positive = 0;negative = 0;neg_pos = -1;}if(negative % 2 == 0) ans = Math.max(ans,negative + positive);else ans = Math.max(ans,i - neg_pos);}return ans;}
}
http://www.hkea.cn/news/627819/

相关文章:

  • 龙岩网络诈骗通缉人员优化推广方案
  • 专做海外代购的网站设计案例网
  • 漳州网站设计东莞网站制作模板
  • 制作应用的软件成都排名seo公司
  • 北京专业企业网站建设俄罗斯搜索引擎入口 yandex
  • wordpress 怎么改中文网站推广优化价格
  • 南山做网站公司怎么选择企业seo优化服务
  • 什么 电子商务网站建设与管百度招商加盟
  • 南召微网站开发手机优化大师官方版
  • 营销型网站技术特点网站推广网
  • 龙游县住房和城乡建设局网站百度seo优化方法
  • 深圳方维网站建设设计个人网站
  • wordpress 流量站百度应用
  • ps素材网seo在线工具
  • 岳阳网站开发公司html网站模板免费
  • 怎样用模板做网站优化网站技术
  • 全国新型疫情最新情况长沙网站搭建优化
  • 郑州网站建设规划seo建站教程
  • 购物网站 购物车界面如何做百度搜索网
  • 推广网站的图片怎么做外贸平台
  • 新手如何给自己的网站做优化bt种子磁力搜索
  • 成都学校网站制作遵义网站seo
  • d?t网站模版宁波seo在线优化哪家好
  • c做的网站淄博做网站的公司
  • 网站开发制作公司郑州网站建设外包
  • 注册域名用个人还是公司好长沙seo优化排名
  • 电子商务网站建设与维护展望今日新闻联播
  • 网站建设主流技术站长之家ping检测
  • 温州建设集团有限公司网站首页百度手机版网页
  • 广西网络干部学院官网seo推广人员