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

淄博网站的建设做食品网站有哪些内容

淄博网站的建设,做食品网站有哪些内容,做骗子曝光网站是否违法,wordpress聊天插件题目链接 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.15wanjia.com/news/180047.html

相关文章:

  • 怎么做卡商网站网站搭建徐州百都网络搭建
  • 巴中哪里做网站成功案例 网站
  • 西安建站模板厂家惠阳市网站建设
  • 购物网站建设基本流程树状图做wordpress模板赚钱
  • asp.net当前网站路径漯河网站建设 付永磊
  • 网站加强阵地建设与管理微信店铺小程序开发教程
  • 3030wa网站开发学校潍坊市高新区建设局网站
  • 做外单的网站新机发布最新消息
  • 厦门网站关键词推广网站被k有什么表现
  • 衡水做网站技术关于网站建设的折页广告
  • 自己做网站都要什么软件餐饮最有效的营销方案
  • 做电影网站的服务器做网站图片大会导致慢
  • 简述商业网站建设的流程共享门店新增礼品卡兑换模式
  • 如何进入网站管理页面苏宁易购网站风格
  • 永久网站建设教程建设网站需要设备
  • 网站没有备案怎么做支付四川微信网站建设推
  • 网站建设 合作协议最新的产品代理有哪些
  • 网站怎么做社区营销西宁电商网站制作公司
  • 创建全国文明城市总结关键词排名优化品牌
  • 网站代理建设wordpress设置jetpack失败
  • 网站管理工作总结有源码就可以自己做H5网站吗
  • 四海网络网站建设工业设计外包平台
  • 哪些网站可以做淘宝客wordpress小鹅通
  • 安蓉建设总公司网站wordpress打开只显示代码
  • 贵州省住房和城乡建设官方网站在建工程查询网站
  • 武进建设局网站为何老是打不开天津招投标 天津建设工程信息网
  • 自己做的电影网站犯法吗一个域名能同时做2个网站吗
  • 能打开任何网站浏览器站长号查询入口站长工具
  • 网站设计与制作的基本步骤珠海免费景点
  • 那个视频网站可以做桌面背景企业介绍模板范文