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

深圳广告设计公司网站搜索热词排名

深圳广告设计公司网站,搜索热词排名,做棋牌游戏网站犯法吗,加密的网站使用jmeter做压测文章目录 Maximum Absolute Sum of Any Subarray 任意子数组和的绝对值的最大值问题描述:分析代码前缀和前缀和 Tag Maximum Absolute Sum of Any Subarray 任意子数组和的绝对值的最大值 问题描述: 给你一个整数数组 nums 。一个子数组 [ n u m s l ,…

文章目录

  • Maximum Absolute Sum of Any Subarray 任意子数组和的绝对值的最大值

Maximum Absolute Sum of Any Subarray 任意子数组和的绝对值的最大值

问题描述:

给你一个整数数组 nums 。一个子数组 [ n u m s l , n u m s l + 1 , . . . , n u m s r − 1 , n u m s r ] [nums_l, nums_{l+1}, ..., nums_{r-1}, nums_{r}] [numsl,numsl+1,...,numsr1,numsr] 的 和的绝对值 为 a b s ( n u m s l + n u m s l + 1 + . . . + n u m s r − 1 + n u m s r ) abs(nums_l + nums_{l+1} + ... + nums_{r-1} + nums_{r}) abs(numsl+numsl+1+...+numsr1+numsr)

请你找出 n u m s nums nums 中 和的绝对值 最大的任意子数组(可能为空),并返回该 最大值 。

abs(x) 定义如下:

如果 x 是负整数,那么 a b s ( x ) = − x abs(x) = -x abs(x)=x
如果 x 是非负整数,那么 a b s ( x ) = x abs(x) = x abs(x)=x

1 < = n u m s . l e n g t h < = 1 0 5 − 1 0 4 < = n u m s [ i ] < = 1 0 4 1 <= nums.length <= 10^5\\ -10^4 <= nums[i] <= 10^4 1<=nums.length<=105104<=nums[i]<=104

分析

暴力

最简单的方法就是枚举出所有可能的子数组,计算其和的绝对值,然后取max。但是子数组的数量规模是 N 2 N^2 N2,所以暴力会TLE,而且即使计算出了子数组,计算其和也是需要时间的。

因为最终需要知道子数组绝对值最大值。

要得到这样的最大值,那么子数组的和sum一定要尽可能的大,或者尽可能的小,即最大的正数或者最小的负数
因此只需要在数组中找到子数组和最大的 s u m > = 0 sum>=0 sum>=0,或者 s u m < 0 sum<0 sum<0,sum的最小负数。

到这里,就和某个问题很像了

可以利用前缀和的思路,进行累加 s u m sum sum,然后与之前最小的 p r e m i n premin premin s u m − p r e m i n sum-premin sumpremin,此时 s u m − p r e m i n sum-premin sumpremin,就是可能的正数的最大子数组和
同样的 s u m − p r e m a x sum- premax sumpremax,就是可能的负数的最小子数组和

代码

前缀和

public int maxAbsoluteSum(int[] nums) {int n = nums.length, ans = nums[0];int premax = 0,premin = 0;int sum = 0 ;for(int i = 0;i<n;i++){ sum += nums[i]; int a = sum - premin; // 非负数的最大int b = premax -sum;//负数的绝对值最大ans = Math.max(ans,Math.max(b,a));premin = Math.min(sum,premin);premax = Math.max(sum,premax);}return ans;}

时间复杂度 O ( N ) O(N) O(N)

空间复杂度 O ( 1 ) O(1) O(1)

前缀和

public int maxAbsoluteSum(int[] nums) {int s = 0, mx = 0, mn = 0;for (int x : nums) {s += x;// mx = Math.max(mx, s);// mn = Math.min(mn, s);if (s > mx) mx = s;else if (s < mn) mn = s; // 效率更高的写法}return mx - mn; }

时间复杂度 O ( N ) O(N) O(N)

空间复杂度 O ( 1 ) O(1) O(1)

灵神的代码更精简,不过他是从前缀和的另一个角度来看这个问题的,所以有点不一样。

Tag

Array

Presum

http://www.mmbaike.com/news/85344.html

相关文章:

  • 怎么做赌博网站的代理成人再就业技能培训班
  • 精品资源共享课程网站建设论文百度seo收费
  • 做网站要找什么公司杭州百度seo优化
  • 从化区城郊街道网站麻二村生态建设seo关键词推广怎么做
  • 建设网站实训珠海做网站的公司
  • 网站生成小程序营销咨询师
  • 茂名仿站定制模板建站专业培训
  • 手机wap网站特效sem推广软件选哪家
  • 学校网站建设意义有哪些方面代写1000字多少钱
  • 济宁城乡建设管理局网站杭州关键词优化外包
  • 大型做网站的公司有哪些嘉兴seo外包公司
  • 长沙公司制作网站费用多少谷歌关键词热度查询
  • 企业为什么要做网站建设新闻热点最新事件
  • 数据百度做网站好用吗昆明抖音推广
  • 网站次页电商入门基础知识
  • 做网站建免费的网站
  • 怎么做像天猫类似的网站企业查询系统官网
  • 做的好的网站着陆页公司做网络推广哪个网站好
  • 企业网站建设哪家优惠优化大师怎么下载
  • 乡镇中心小学校园网站建设指南广州网页seo排名
  • wordpress新网站学校seo推广培训班
  • 哪个网站做衣服的色盲悖论
  • 网站链接锚点怎么做白酒营销策划方案
  • 金溪那里可以做网站长春seo主管
  • asp个人网站模板网页seo是什么意思
  • 西华县建设局网站seo优化一般包括哪些内容
  • 网站开发项目延期说明百度搜索引擎技巧
  • 新疆网站备案怎么办理sem竞价广告
  • 网站建设属于什么合同营销网站做的好的公司
  • 网站营销型百度应用商店