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

三灶网站建设微网站建设的现状

三灶网站建设,微网站建设的现状,上海app定制开发公司,企业为什么要培训1. 最大子数组和 53. 最大子数组和 状态表示#xff1a;以 i 位置为结尾时的所有子数组中的最大和 状态转移方程#xff1a; i 位置为结尾的子数组又可以分为长度为 1 的和大于 1 的#xff0c;长度为 1 就是 nums[i] #xff0c;长度不为 1 就是 dp[i - 1] nums[i]以 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] 就是 0num[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://www.hkea.cn/news/14518927/

相关文章:

  • 做推文封面的网站做视频网站需要什么
  • 网站后台功能模块设计网址免费制作app
  • 做网站百灵鸟网站的域名在哪里看
  • 自己做的网站不显示图片wordpress手机访问
  • 景区网站建设费用新网官方网站登陆
  • 新建网站推广网站建设 力洋网络
  • 太原深圳建设工程信息网站湖南省建设资源人才网站
  • 公司网站制作效果怎么样潜江资讯网
  • 南通装饰网站建设怎么用百度云做网站空间
  • 厦门专业网站设计公asp.net网站的数据库配置
  • 如何免费搭建自己的网站查查企业信息查询平台
  • 网上做兼职做网站wordpress主题 好的
  • 做 英语试题的网站硬件开发岗位要求
  • 成都建设银行合作装修网站星裕建设网站
  • 网站建设方案对比分析报告google登录入口
  • 网页欢迎页面设计广告网站建设网站排名优化
  • 乌海网站建设公司网站栏目收录
  • 51个人网站广州网站建设电话咨询
  • 网站制作公司中企动力推荐定制网站建设公司价格
  • 邢台移动网站建设费用wordpress侧边栏在哪
  • 怎么做 在线电影网站苏州调查公司电话
  • 如何做一个网站的seo郑州网站建设 个人工作室
  • 自建网站的好处企业商城网站开发建设
  • 吴志国网站建设工作室网站域名到期登不上是怎么回事
  • 个人购物网站备案哪些网站平台可以做推广
  • 网站开发游戏开发门户设计方案
  • 给别人建设网站的注意事项架设网站多少钱
  • 墨西哥网站后缀鹤山网站建设易搜互联
  • 怎么在百度搜到自己的网站网站建设互联网推广
  • 潍坊做网站建设做网站推广广告