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

【leetcode】动态规划

19. 918 环形子数组的最大和

题目:

给定一个长度为 n环形整数数组 nums ,返回 nums 的非空 子数组 的最大可能和

环形数组 意味着数组的末端将会与开头相连呈环状。形式上, nums[i] 的下一个元素是 nums[(i + 1) % n]nums[i] 的前一个元素是 nums[(i - 1 + n) % n]

子数组 最多只能包含固定缓冲区 nums 中的每个元素一次。形式上,对于子数组 nums[i], nums[i + 1], ..., nums[j] ,不存在 i <= k1, k2 <= j 其中 k1 % n == k2 % n

题目链接

918. 环形子数组的最大和 - 力扣(LeetCode)

文字分析

 代码

class Solution {
public:
    int maxSubarraySumCircular(vector<int>& nums) 
    {
        int sum = 0;
        int n = nums.size();
        vector<int>dp1(n);
        vector<int>dp2(n);
        int Max , Min;
        Max = Min = sum = dp2[0] = dp1[0] = nums[0];
        for(int i = 1;i < n;i++)
        {
            dp1[i] = max(dp1[i - 1] + nums[i],nums[i]);
            dp2[i] = min(dp2[i - 1] + nums[i],nums[i]);
            Max = max(Max,dp1[i]);
            Min = min(Min,dp2[i]);
            sum += nums[i];
        }
        if(Min == sum)
        {
            return Max;
        }
        return Max > sum - Min ? Max : sum - Min;
    }
};

20. 152 乘积最大子数组

题目:

给你一个整数数组 nums ,请你找出数组中乘积最大的非空连续 子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。

测试用例的答案是一个 32-位 整数。

题目链接

152. 乘积最大子数组 - 力扣(LeetCode)

文字分析

 代码

class Solution {
public:
    int maxProduct(vector<int>& nums) 
    {
        int n = nums.size();
        vector<int> dp1(n);
        vector<int> dp2(n);
        int Max = dp1[0] = dp2[0] = nums[0];
        for(int i = 1;i < n;i++)
        {
            dp1[i] = dp2[i] = nums[i];
            if(nums[i] > 0)
            {
                 dp1[i] = max(dp1[i],dp1[i - 1] * nums[i]);
                 dp2[i] = min(dp2[i],dp2[i - 1] * nums[i]);
            }
            if(nums[i] < 0)
            {
                 dp1[i] = max(dp1[i],dp2[i - 1] * nums[i]);
                 dp2[i] = min(dp2[i],dp1[i - 1] * nums[i]);
            }
            Max = max(Max,dp1[i]);
        }
        return Max;
    }
};

21. 1567 . 乘积为正数的最长子数长度

题目:

给你一个整数数组 nums ,请你求出乘积为正数的最长子数组的长度。

一个数组的子数组是由原数组中零个或者更多个连续数字组成的数组。

请你返回乘积为正数的最长子数组长度。

题目链接

1567. 乘积为正数的最长子数组长度 - 力扣(LeetCode)

文字分析

 

代码

class Solution {
public:
    int getMaxLen(vector<int>& nums) 
    {
            int n = nums.size();
            vector<int> f(n);
            vector<int> g(n);
            if(nums[0] > 0)
            {
                f[0] = 1;
                g[0] = 0;
            }
            else if(nums[0] < 0)
            {
                f[0] = 0;
                g[0] = 1;
            }
            else
            {
                f[0] = g[0] = 0;
            }
            int Max = f[0];
            for(int i = 1;i < n;i++)
            {
                if(nums[i] > 0)
                {
                    f[i] = f[i - 1] + 1;
                    if(g[i - 1] != 0)
                    {
                        g[i] = g[i - 1] + 1;
                    }
                    else
                    {
                        g[i] = 0;
                    }
                }
                else if(nums[i] < 0)
                {
                    if(g[i - 1] != 0)
                    {
                        f[i] = g[i - 1] + 1;
                    }
                    else
                    {
                        f[i] = 0;
                    }
                    g[i] = f[i - 1] + 1;
                }
                else
                {
                    f[i] = g[i] = 0;
                }
                Max = max(Max,f[i]);
            }
            return Max;
    }
};


http://www.kler.cn/news/368752.html

相关文章:

  • XJ02、消费金融|消费金融业务模式中的主要主体
  • 基于SpringBoot的中药材进存销管理系统设计与实现
  • web pdf 图片拖动图片合成
  • 【数据库】数据操作语言DML MySQL函数介绍
  • Java全栈经典面试题剖析4】JavaSE高级 -- 包装类,String, 类方法
  • 逆向破解真随机数系统的思路
  • python+大数据+基于Hadoop的个性化图书推荐系统【内含源码+文档+部署教程】
  • 【我的创作纪念日1024】
  • 大数据-187 Elasticsearch - ELK 家族 Logstash Filter 插件 使用详解
  • APS开源源码解读: 排程工具 optaplanner II
  • Windows系统PyCharm右键运行.sh文件
  • Web API 哪家强?Axios、Fetch 和 HttpClient 优选指南
  • html5中获取元素的方法
  • 高效集成:聚水潭奇门至金蝶云星空的数据流自动化
  • Python爬虫-汽车投诉排行榜单数据
  • xss跨站及绕过与防护
  • Spring Boot 架构入门学习指南
  • NameNode的HA特性和基于ZKFC的自动故障转移机制
  • 前端浏览器知识总结
  • STM32 第18章 SysTick--系统定时器
  • kafka-console-ui的简介及安装使用
  • OceanMind海睿思受邀参加中国信通院2024数据要素发展大会
  • 使用 Spring Doc 为 Spring REST API 生成 OpenAPI 3.0 文档
  • Web做题思路
  • python实现数据库两个表之间的更新操作(模糊匹配)示例
  • Django-cookie,session