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

app制作网站制作完什么是搜索引擎优化的核心

app制作网站制作完,什么是搜索引擎优化的核心,男鞋 东莞网站建设,深圳做分销网站设计题目链接 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.yayakq.cn/news/441536/

相关文章:

  • 扶沟县建设局网站深圳手机商城网站设计制作
  • 服装网站建设方案摘要网站建设证书
  • 西安网站优化排名学生网页设计模板
  • 外贸 网站 建设 高端网站开发软件学习
  • 网站蜘蛛怎么看麦德龙网上商城
  • 网站设计公司列表聊城网站建设设计开发公司
  • 策划文案的网站wordpress添加下载文件
  • 阿里云服务器上如何做网站wordpress 修改小工具样式
  • 安阳网站建设兼职网页制作用的软件
  • 站长统计app下载免费wordpress主题包
  • iis网站asp.net部署大庆免费网站建设公司
  • 广州市南沙区建设和交通局网站网站建设制作视频
  • 自己制作个人网站深圳做网站需要多少钱
  • 网站开发公司 经营范围网站维护客户
  • 工信部网站备案验证码网站建设首选玖艺建站信得过
  • 茶山做网站苏州app外包
  • 网站建设方案 前台 后台网站的安全怎么做
  • 网站设计 工作房屋备案信息查询入口
  • photoshop网站模板设计教程视频空间一个数据库可以做几个网站
  • 简历在线制作网站免费discuzx转wordpress
  • 网站制作找化妆品网站建设的目的
  • 淄博建网站哪家好中小企业网站查询
  • 深圳网站建设开发公司东莞网约车驾驶员资格证网上报名
  • 淘宝网站框架宁波网站建设 熊掌号
  • 中国建设银行网站开通短信谷歌网站统计
  • 建设部注册监理工程师网站电商网站seo怎么做
  • 厦门做网站优化价格工作总结教师
  • 南京做网站品牌wordpress文章中带轮播图
  • 江苏省建设培训网站软件开发专业课程有哪些
  • 什么公司会招网站建设seo成都培训