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

晚上正能量免费下载软件安全网站优化建设河南

晚上正能量免费下载软件安全,网站优化建设河南,wordpress 创建数据表,云服务器建站文章目录 一、题目二、思路三、代码 一、题目 二、思路 (0)读懂题意:题目的“连续”是指位置的连续,而不是说数字的连续,这是个大坑。 (1)确定状态:定义两个状态来记录当前子数组的…

文章目录

  • 一、题目
  • 二、思路
  • 三、代码

一、题目

在这里插入图片描述

二、思路

(0)读懂题意:题目的“连续”是指位置的连续,而不是说数字的连续,这是个大坑。

(1)确定状态:定义两个状态来记录当前子数组的最大乘积、最小乘积。因为在处理负数时,最小乘积乘以负数可能变为最大乘积。dp_max[i]表示以nums[i]结尾的子数组的最大乘积、dp_min[i]表示以nums[i]结尾的子数组的最小乘积。

(2)状态转移方程:对于每个元素nums[i],我们的dp_max[i]dp_min[i]可以从这三个数中确定:

  • 只包含当前元素 nums[i]
  • 当前元素与之前的最大乘积子数组乘积,即 dp_max[i-1] * nums[i]
  • 当前元素与之前的最小乘积子数组乘积,即 dp_min[i-1] * nums[i]

即状态转移方程可表示为:

dp_max[i] = max(nums[i], dp_max[i-1] * nums[i], dp_min[i-1] * nums[i])
dp_min[i] = min(nums[i], dp_max[i-1] * nums[i], dp_min[i-1] * nums[i])

(3)初始状态+边界条件:以第一个元素结尾的子数组最大乘积就是它本身、以第一个元素结尾的子数组最小乘积就是它本身、初始乘积最大结果为第一个元素。

(4)遍历顺序:从左到右遍历数组。

三、代码

(方法一)按照思路的代码如下,时间复杂度为O(n),空间复杂度为O(n)。

class Solution(object):def maxProduct(self, nums):""":type nums: List[int]:rtype: int"""if len(nums) == 0:return 0if len(nums) == 1:return nums[0]# 初始化数组n = len(nums)dp_max = [0] * n dp_min = [0] * n# 初始状态dp_max[0] = nums[0]dp_min[0] = nums[0]cheng_ans = nums[0]# 从第二个元素开始遍历for i in range(1, n):num = nums[i]dp_max[i] = max(num, dp_max[i-1]*num, dp_min[i-1]*num)dp_min[i] = min(num, dp_max[i-1]*num, dp_min[i-1]*num)cheng_ans = max(cheng_ans, dp_max[i])return cheng_ans

(方法二)为了优化空间复杂度,发现每次当前只利用前一次状态,所以dp_maxdp_min没必要单独用两个数组记录所有的状态。但注意在计算状态转移方程时,分别计算dp_max和dp_min都会用到上一次的dp_max和dp_min,这为了用错dp_mxn,可以直接对num确保是正数后,交换dp_max和dp_min的位置,减少max和min函数的入参个数。

class Solution(object):def maxProduct(self, nums):""":type nums: List[int]:rtype: int"""if len(nums) == 0:return 0if len(nums) == 1:return nums[0]# 初始化数组n = len(nums)# 初始状态dp_max = nums[0]dp_min = nums[0]cheng_ans = nums[0]# 从第二个元素开始遍历for i in range(1, n):num = nums[i]if num < 0:dp_max, dp_min = dp_min, dp_maxdp_max = max(num, dp_max*num)dp_min = min(num, dp_min*num)cheng_ans = max(cheng_ans, dp_max)return cheng_ans
http://www.yayakq.cn/news/984281/

相关文章:

  • 自建站跨境电商阿里云域名注册官网叫什么
  • 东莞广告网站建设淘宝网页设计流程图
  • 推荐大气的网站h5 技术做健康类网站
  • 网站建设流程步骤为需求分析怎么弄自己的网站卖东西
  • 电商发展现状与趋势海阳seo排名
  • 什么网站可以做任务挣钱的广州十大装修设计公司
  • 淄博哪个网站做房屋出赁好统计二级域名的网站流量有什么用
  • 秦皇岛网站建公司c2c平台举例
  • 加拿大服务器做网站wordpress游戏门户
  • 上海网站设计要多少钱广州贝勤网络科技有限公司
  • 盘锦兴隆台住房和城乡建设网站网站建设人员叫什么
  • 防水网站的外链如何找近期新闻热点事件摘抄
  • 专业建设网站的企业青海找人做网站多少钱
  • 做网站必须要购买域名用wordpress做网站页面显示404
  • 苏州专门网站好姑娘免费高清视频
  • 网站建设ag公司视频广告拍摄
  • 怎样查询网站备案号wordpress+联动筛选
  • 手机网站和电脑网站开发网站开发的技术支撑 经验能力
  • 公司微网站建设价格随州网站制作
  • 人才招聘网站开发吸引流量的网站
  • 重庆简易注销在什么网站做郑州网上车管所官网
  • 如何查网站开发环境怎么发布个人网站
  • 大连建设主管部门官方网站网站设计方案怎么做
  • 网站显示乱码怎么办啊外贸网站建设解决方案
  • python做的网站有哪些页面跳转的方式有哪些
  • 网站建设的课件微信网页版网址
  • 建设网站的市场环境wordpress链接数据库出错
  • Django可以做门户网站吗网页编辑器怎么用
  • 网站上的超链接怎么做网络推广宣传
  • 上海网站建设怎么绵阳安州区做网站的有哪些