首页 > 其他分享 >leetcode 152 动态规划

leetcode 152 动态规划

时间:2024-02-04 18:00:14浏览次数:39  
标签:152 nums int 复杂度 mindp ans maxdp leetcode 动态

Problem: 152. 乘积最大子数组

目录

思路

动态规划的题型见到了就记录一下吧,接触到的并不多,也不太会。这道题主要是有负数,所以需要维护两个变量,我们希望最大值尽可能大,也希望负数最小值尽可能小,因为如果下一位是负数,相乘可以变成正数,最小值就会变成最大值。

解题方法

维护数组maxdp和mindp,\(maxdp[i]=max{maxdp[i-1]*nums[i],mindp[i-1]*nums[i],nums[i]}\),mindp[i]也是同理,这里出现的是简化空间后的结果,可以发现每一个dp[i]只和前一个变量有关,所以我们将数组改变为一个变量。

复杂度

时间复杂度:

\(O(n)\)

空间复杂度:

\(O(n)||O(1)\)

Code

class Solution {
public:
    int maxProduct(vector<int>& nums) {
      int n=nums.size();
      int  ans=nums[0];
     int maxdp;
     int mindp;
      maxdp=nums[0];
      mindp=nums[0];
      for (size_t i = 1; i < n; i++)
      {int temp=maxdp;
        maxdp=max(maxdp*nums[i],max(mindp*nums[i],nums[i]));
        mindp=min(mindp*nums[i],min(temp*nums[i],nums[i]));
        ans=max(ans,maxdp);
      }
   return ans;
    }
};

标签:152,nums,int,复杂度,mindp,ans,maxdp,leetcode,动态
From: https://www.cnblogs.com/oxidationreaction/p/18006728

相关文章

  • leetcode 第176题:第二高的薪水
    leetcode数据库第176题:第二高的薪水第一种:去掉最大的薪水,选取第二大的薪水selectmax(salary)asSecondHighestSalaryfromEmployeewheresalary<(selectmax(salary)fromEmployee);第二种:嵌套查询+去除null+去重要想获取第二高,需要排序,使用orderby(默认是升序a......
  • (12)动态生成菜单及绑定自定义事件
    varAddCollctMenus:ArrayOfTMenuItem;//动态菜单 procedureTForm1.Button5Click(Sender:TObject);Vari,AddCollctMenuCount:Integer;BeginAddCollctMenuCount:=Length(AddCollctMenus)-1;Fori:=0ToAddCollctMenuCountDoBeginFreeAndNil......
  • ABP-VNext 用户权限管理系统实战03---动态api调用并传递token
    一、使用动态api的目的ABP可以自动创建C#API客户端代理来调用远程HTTP服务(RESTAPIS).通过这种方式,你不需要通过 HttpClient 或者其他低级的HTTP功能调用远程服务并获取数据.现在有两个服务:BackgroundJob服务要调用IdentityManagement服务,并在调用时传递token二、集成步骤1、......
  • 动态规划
    动态规划0~1背包题目描述https://www.luogu.com.cn/problem/P1048辰辰是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师。为此,他想拜附近最有威望的医师为师。医师为了判断他的资质,给他出了一个难题。医师把他带到一个到处都是草药的山洞里对他说:“孩子,这个山洞里有一些不......
  • MyBatis动态SQL教程
    动态SQL是MyBatis中非常强大且灵活的功能,允许你根据不同的条件构建SQL查询。这主要通过<if>、<choose>、<when>、<otherwise>、<foreach>等标签实现。查询场景/***根据条件查询员工信息*@paramemp*@return*/List<Emp>getEmpCondition(Empemp);if标签的使用......
  • MyBatis的常用动态标签
    1、<sql><!--<sqlid=""></sql>:设置一段SQL片段,即公共SQL,可以被当前映射文件中所有的SQL语句所访问<includerefid="empColumns"></include>:访问某个SQL片段--><sqlid="empColumns">selecteid,ename,age,sex,d......
  • 动态规划--线性dp
    线性dp动态规划步骤:1.状态表示用几维度的数组,每一维度的意思。2.状态计算状态转移方程   题目:数字三角形给定一个如下图所示的数字三角形,从顶部出发,在每一结点可以选择移动至其左下方的结点或移动至其右下方的结点,一直走到底层,要求找出一条路径,使路径上的数字的和最......
  • 动态sql语句
    MyBatis的动态sql语句sql语句是根据查询条件动态的变化mybatis提供一些动态sql的标签常用的动态sql标签: IF标签使用 如果查询条件不为空则按照查询条件查询。(可以使用多个IF标签,当IF标签满足时添加where条件)可以满足多个条件语法:<iftest="条件语句"></if>举......
  • 微信小程序如何实现动态显示和隐藏某个控件
    Hello大家好!我是咕噜铁蛋!微信小程序作为一种轻量级的应用开发平台,越来越受到开发者和用户的关注。在微信小程序的开发过程中,控制元素的显示和隐藏是一个常见的需求。通过动态显示和隐藏某个控件,我们可以根据用户的操作或特定的条件来提供更好的用户体验。本文铁蛋将为为大家详细介......
  • 在Vue中如何动态绑定class和style属性
    在Vue中,动态绑定class和style属性是我们经常遇到的需求。这个功能允许我们根据不同的条件来动态改变元素的样式,让我们的应用更加灵活和富有交互性。在本篇博客文章中,我将带你深入探索在Vue中如何实现这一功能。首先,让我们了解一下Vue中的class绑定。Vue提供了一种简洁而强大的语法......