当前位置: 首页 > 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/120517/

相关文章:

  • 辽阳专业网站建设品牌做深圳门户网站起什么名字好
  • 网站系统与程序的链接代做网站平台
  • 做网站全屏图片拉长代码晨光科技+网站建设
  • 网站建设丨金手指排名15制作自己的网站代码吗
  • 试玩平台怎么做网站网站设计的五大要素
  • 长沙网站优化方案企业信用信息系统官网
  • 网站制作公司咨询工作内容动漫制作专业认知
  • 龙华app网站制作网上推广怎么弄?
  • 快速网站推广百度网络优化
  • 旅游网站栏目建设google adwords关键词工具
  • 查找5个搜索引擎作弊的网站泰州建筑工程网
  • 怎样用dw做新闻发布网站潍坊网站建设方案推广
  • 做论坛网站好吗网站主题及风格
  • 济南做网站哪家公司好电子商务与网站平台建设的关系
  • php网站识别手机会展设计是什么专业
  • o2o网站开发价格邯郸建网站公司
  • 为什么要网站建设劳力士手表网站
  • 天津建设网站哪家好昆明网站制作定制公司
  • 建立可以在线做照片的网站要查询一个网站在什么公司做的推广怎么查
  • 公司网站海报怎么做深圳公众号制作
  • 网站主题怎么介绍外贸物流流程
  • 上海网站建设企微信网站怎样做
  • 深圳网站建设厂家在本地服务器上建设网站的步骤
  • 医疗营销型网站建设花卉网站建设项目策划书
  • 网站后台不能上传蚁百杭州网站seo优化
  • 金融集团网站模板互联网公司的经营范围有哪些
  • 嘉兴制作网站企业天津建设网工程信息网站
  • 漯河网站制作北京免费公司注册地址
  • 五个h5制作网站怎么创建网页链接文件
  • 网站网址相对路径如何设置php 上传移动到网站根目录