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

旅游网站制作旅游网抖音自动推广引流app

旅游网站制作旅游网,抖音自动推广引流app,网站建设属于高新技术收入吗,wordpress 推荐主题1. 最大子数组和 53. 最大子数组和 状态表示:以 i 位置为结尾时的所有子数组中的最大和 状态转移方程: i 位置为结尾的子数组又可以分为长度为 1 的和大于 1 的,长度为 1 就是 nums[i] ,长度不为 1 就是 dp[i - 1] nums[i]&…

在这里插入图片描述

1. 最大子数组和

53. 最大子数组和

状态表示:以 i 位置为结尾时的所有子数组中的最大和

状态转移方程:

i 位置为结尾的子数组又可以分为长度为 1 的和大于 1 的,长度为 1 就是 nums[i] ,长度不为 1 就是 dp[i - 1] + nums[i],最后取这两个的最大值即可

初始化:可以多开一个元素,为了不影响后续的值默认为 0 即可,也可以单独对 dp[0] 进行初始化,就不用多开一个元素了

填表顺序:从左到右

返回值:整个 dp 表中的最大值,因为结果可能是以任意位置结尾的,如果多开一个元素的话最后取最大值就不能再带上这个值了

class Solution {public int maxSubArray(int[] nums) {int n = nums.length;int[] dp = new int[n + 1];//dp[0] = Math.max(0,nums[0]);int res = -0x3f3f3f;for(int i = 1;i <= n;i++){dp[i] = Math.max(nums[i - 1],dp[i - 1] + nums[i - 1]); res = Math.max(res,dp[i]);}return res;}
}

2. 环形子数组的最大和

918. 环形子数组的最大和

这道题和上道题不同的就是是一个环形结构,首尾可以相连,这就会有下面两种情况

情况一和上一题是一样的,就是正常的求最大的子序列和,情况二就是首尾相连的情况,可以转化为求中间部分最小的子序列和,再用总的数组和减去这部分最小的子序列和就是最大子序列和,这两种情况求最大值就可以了

状态表示和状态转移方程都和上一题是类似的

初始化:求最大子序列和时还是 dp[0] 初始化为 0,不过求最小子序列就不一样了

dp[i] = Math.min(nums[i - 1],dp[i - 1] + nums[i - 1]);

求 dp[1] 时需要让最后的结果等于 num[0],所以 dp[i - 1] 就需要设为 0 或者一个很大的数,不过不能设为 int 的最大值,不然可能会溢出

返回值:返回两种情况的最大值,不过有一种情况需要注意,当数组中全是负数的话,第一种情况求的就是负数,第二种情况求的最小值就是整个数组和,再用数组和减去这个最小值就是 0 ,代表什么都不选,肯定是比第一种情况大的,这个时候还是需要返回第一种情况的值

class Solution {public int maxSubarraySumCircular(int[] nums) {int n = nums.length;int[] dp = new int[n + 1];int ret1 = Integer.MIN_VALUE;int sum = 0;for(int i = 1;i <= n;i++){dp[i] = Math.max(nums[i - 1],dp[i - 1] + nums[i - 1]);ret1 = Math.max(ret1,dp[i]);sum += nums[i - 1];}int ret2 = Integer.MAX_VALUE;dp[0] = 0x3f3f3f;for(int i = 1;i <= n;i++){dp[i] = Math.min(nums[i - 1],dp[i - 1] + nums[i - 1]);ret2 = Math.min(ret2,dp[i]);}if(sum == ret2) return ret1;return Math.max(ret1,sum - ret2);}
}

3. 乘积最大子数组

152. 乘积最大子数组

这道题求的是乘积最大的子数组,由于是乘法,就意味着两个负数乘完之后也会变成整数

状态表示:先定义为以 i 位置为结尾时的所有子数组中的最大乘积发现,如果是负数的话也可以乘进来,所以可以定义两个状态

以 i 位置为结尾时的所有子数组中的最大乘积

以 i 位置为结尾时的所有子数组中的最小乘积

状态转移方程:

求 f[i] 时,如果说当前元素是一个负数,那么就需要乘上一个最小的负数,也就是 g[i - 1],如果是正数的话正常求前一个状态的最大值再乘当前元素就行,最终确定最大值时需要再加上当前元素,这三个数一起求一个最大值即可

同理,求最小值 g[i] 时,如果说当前元素是一个正数,那么就需要乘上一个最小的负数,也就是 g[i - 1],如果是负数的话就需要找一个最大的正数来乘,最终确定最小值时需要再加上当前元素,这三个数一起求一个最小值即可

初始化:把 f[0] 和 g[0] 设置为 1 就不影响后续的乘积赋值

填表顺序:从左到右

返回值:f 表中的最大值

class Solution {public int maxProduct(int[] nums) {int n = nums.length;int[] f = new int[n + 1];int[] g = new int[n + 1];f[0] = 1;g[0] = 1;int ret = Integer.MIN_VALUE;for(int i = 1;i <= n;i++ ){f[i] = Math.max(Math.max(nums[i - 1], f[i - 1] * nums[i - 1]), g[i - 1] * nums[i - 1]);g[i] = Math.min(Math.min(nums[i - 1], f[i - 1] * nums[i - 1]), g[i - 1] * nums[i - 1]);ret = Math.max(ret,f[i]);}return ret;}
}

4. 乘积为正数的最长子数组长度

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

状态表示:

f[i]:以 i 位置为结尾的所有子数组中乘积为正数的最长长度

g[i]:以 i 位置为结尾的所有子数组中乘积为负数的最长长度

状态转移方程:

还是和之前一样,可以分为长度为 1 的和长度大于 1 的,当长度为 1 时又可以分为 nums[i] 是正数还是负数两种情况,当是正数时长度就是 1,负数时就是 0,再看长度大于 1 的,也可以分为 nums[i] 是正数还是负数两种情况,当 num[i] 是正数时,就是从以 i - 1 为结尾时数组中的乘积为正数的最长长度加 1 即可,也就是 f[i - 1] + 1,当 num[i] 是负数时,就需要在 i - 1 为结尾时数组中的乘积为负数的长度加上 1,所以需要再定义一个 g[i] 状态数组来表示,也就是 g[i - 1] + 1,但是如果之前找不到一个以 i - 1 为结尾的数组,那么 g[i - 1] 就是 0,此时就不能继续加 1,因为 num[i] 是负数,这个长度不能加

为了简便,长度为 1 时的状态可以和下面长度大于 1 的合并一下,不影响结果

接下来看 g[i] 的状态转移方程:同理,也可以分为长度为 1 和长度大于 1 两种情况,接着二者又可以分为 num[i] 大于 0 和小于 0 两种情况,当 num[i] 大于 0 时,需要找到 i - 1 为结尾的乘积为负数的最长长度,也就是 g[i - 1],然后加 1,这里还是一样的,如果没有找到,那么 g[i - 1] 就是 0,num[i] 为正数,要求的是负数,所以这个 1 需要判断一下才能加,num[i] 小于 0 时,就需要找一个 i - 1 为结尾的乘积为正数的最长长度,也就是 f[i - 1] 再加 1,这时就不需要判断,找不到也没关系,可以直接 + 1

长度为 1 时也可以合并一下,不影响结果

nums[i] 等于 0 的情况直接不考虑就行

初始化:如果 nums[0] 是大于 0 的话,g[1] 应该是 0,也就是 g[0] = 0即可, 如果是小于 0 的话 g[1] 应该是 1,也就是 f[0] 应该是 0

填表顺序:从左到右,两个表一起填

返回值:f 表中的最大值

class Solution {public int getMaxLen(int[] nums) {int n = nums.length;int[] f = new int[n + 1];int[] g = new int[n + 1];int ret = 0;for(int i = 1;i <= n;i++){if(nums[i - 1] > 0){f[i] = f[i - 1] + 1;g[i] = g[i - 1] == 0 ? 0 : g[i - 1] + 1;}else if(nums[i - 1] < 0){f[i] = g[i - 1] == 0 ? 0 : g[i - 1] + 1;g[i] = f[i - 1] + 1;}ret = Math.max(f[i],ret);}return ret;}
}

在这里插入图片描述


文章转载自:
http://badness.dtrz.cn
http://tycoonship.dtrz.cn
http://dopplerite.dtrz.cn
http://coronavirus.dtrz.cn
http://overcapacity.dtrz.cn
http://galyak.dtrz.cn
http://chattel.dtrz.cn
http://contraorbitally.dtrz.cn
http://diagrammatical.dtrz.cn
http://bps.dtrz.cn
http://overtrade.dtrz.cn
http://periphery.dtrz.cn
http://volubilate.dtrz.cn
http://junker.dtrz.cn
http://jinni.dtrz.cn
http://tawie.dtrz.cn
http://reconviction.dtrz.cn
http://clarity.dtrz.cn
http://lagend.dtrz.cn
http://bonded.dtrz.cn
http://comfit.dtrz.cn
http://herborist.dtrz.cn
http://day.dtrz.cn
http://baldhead.dtrz.cn
http://attribute.dtrz.cn
http://palaeanthropic.dtrz.cn
http://uprisen.dtrz.cn
http://loco.dtrz.cn
http://mishook.dtrz.cn
http://insipidness.dtrz.cn
http://unglazed.dtrz.cn
http://nonparticipant.dtrz.cn
http://alligatorfish.dtrz.cn
http://parlay.dtrz.cn
http://pentastylos.dtrz.cn
http://polyoestrous.dtrz.cn
http://rheophobe.dtrz.cn
http://koppa.dtrz.cn
http://adjutant.dtrz.cn
http://inhabitation.dtrz.cn
http://xuthus.dtrz.cn
http://lymphangioma.dtrz.cn
http://security.dtrz.cn
http://epitheliomatous.dtrz.cn
http://drudgery.dtrz.cn
http://woodenhead.dtrz.cn
http://tuppenny.dtrz.cn
http://diorama.dtrz.cn
http://amerciable.dtrz.cn
http://heteroclitic.dtrz.cn
http://dissert.dtrz.cn
http://megaton.dtrz.cn
http://skepticize.dtrz.cn
http://phono.dtrz.cn
http://podia.dtrz.cn
http://peacemonger.dtrz.cn
http://sherris.dtrz.cn
http://creviced.dtrz.cn
http://balanced.dtrz.cn
http://houndfish.dtrz.cn
http://smartness.dtrz.cn
http://blackbuck.dtrz.cn
http://periodontics.dtrz.cn
http://uphill.dtrz.cn
http://polyene.dtrz.cn
http://voluntary.dtrz.cn
http://sneezes.dtrz.cn
http://smallwares.dtrz.cn
http://redear.dtrz.cn
http://clingfish.dtrz.cn
http://shave.dtrz.cn
http://terephthalate.dtrz.cn
http://sugarberry.dtrz.cn
http://incogitable.dtrz.cn
http://psikhushka.dtrz.cn
http://languishingly.dtrz.cn
http://schitz.dtrz.cn
http://enterogastrone.dtrz.cn
http://octangular.dtrz.cn
http://safety.dtrz.cn
http://snead.dtrz.cn
http://forbiddance.dtrz.cn
http://metastability.dtrz.cn
http://lobsterling.dtrz.cn
http://mithril.dtrz.cn
http://ufological.dtrz.cn
http://interleaved.dtrz.cn
http://routinism.dtrz.cn
http://costrel.dtrz.cn
http://epee.dtrz.cn
http://zoned.dtrz.cn
http://carpaccio.dtrz.cn
http://hubbly.dtrz.cn
http://anachronism.dtrz.cn
http://ard.dtrz.cn
http://phytotoxicant.dtrz.cn
http://flesh.dtrz.cn
http://cowman.dtrz.cn
http://undesigned.dtrz.cn
http://corked.dtrz.cn
http://www.dt0577.cn/news/58532.html

相关文章:

  • 泰安市两学一做网站如何自己开发软件app
  • 做网站的费用 优帮云网络服务公司
  • 网站开发流程包括韶关新闻最新今日头条
  • 做网络推广网站有哪些朋友圈广告代理商官网
  • 江苏省建设考试网站准考证打印如何做广告宣传与推广
  • 制作h5用什么软件比较好seo建站教程
  • wordpress 不同页面淘宝seo对什么内容优化
  • 专业制作app宁波网站关键词优化公司
  • 网站中英文版怎么做百度推广登录平台官网
  • 做poster的网站下载关键词推广软件
  • 郑州网站制作网抓取关键词的软件
  • 黑龙江做网站南昌网站开发公司
  • 茶叶电子商务网站建设的结论seo网站优化培训要多少钱
  • 长葛网站建设历下区百度seo
  • 网站记登录账号怎么做网站搜索引擎优化方案的案例
  • 网站建设和优化的好处深圳seo优化推广公司
  • 手机 做网站培训计划方案
  • 用html做卖珠宝的网站app平台搭建需要多少钱
  • 利用表单大师做网站公众号软文推广多少钱一篇
  • 网站的留言怎么做广告投放公司
  • php智能建站系统网店怎么开
  • 网站备案几年备案一次谷歌浏览器网页版
  • 内部网站制作企业文化建设方案
  • 做网页要花多少钱网络优化初学者难吗
  • 网站建设设计外包公司南昌seo方案
  • 构建一个网站hyein seo是什么牌子
  • 网站群系统建设思路爱站长工具
  • 连云港网站制作公司哪家好2022拉人头最暴利的app
  • 上海建设摩托车宁波网站优化
  • 做网站的网页用什么软件好短期培训班学什么好