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

公司招聘一个网站建设来做推广众志seo

公司招聘一个网站建设来做推广,众志seo,做网站说什么5.0啥意思,程序开发环境对于区间求最值场景,如果区间不定长度的,可以使用稀疏表进行求解,如果区间是固定长度的,则可以使用分块的思想(与稀疏表原理类似),都是通过压缩状态个数, 1 关于稀疏表的原理详见&a…

对于区间求最值场景,如果区间不定长度的,可以使用稀疏表进行求解,如果区间是固定长度的,则可以使用分块的思想(与稀疏表原理类似),都是通过压缩状态个数,

1 关于稀疏表的原理详见:

稀疏表(Sparse Table,ST原理及应用场景
下面是一个稀疏表的python实现

class Solution:def __init__(self, nums):self.nums = numsself.init_value = -9999999999999self.st = self.initSparseTable(self.nums)def initSparseTable(self, nums):# 初始化稀疏表self.init_value = -9999999999999steps = math.floor(math.log(len(self.nums), 2))st = [[self.init_value for _ in range(steps + 1)] for _ in range(len(self.nums))]for i in range(len(self.nums)):k = math.floor(math.log(len(self.nums) - i, 2))for j in range(k):st[i][j] = self.sparseTable(st, i, j)return stdef sparseTable(self, st, i, j):if j == 0:return self.nums[i]if st[i][j] != self.init_value:return st[i][j]else:tmp_max = max(self.sparseTable(st, i, j - 1), self.sparseTable(st, int(i + math.pow(2, j - 1)), j - 1),)st[i][j] = tmp_maxreturn tmp_maxdef maxSlidingWindow(self, nums: list, k: int) -> list[int]:# 求所有k个区间的最值l1 = []j = int(math.floor(math.log(k, 2)))if int(math.pow(2, j)) == k:for i in range(0, len(nums) - k + 1):l1.append(self.st[i][j])else:for i in range(0, len(nums) - k + 1):l1.append(max(self.st[i][j], self.st[i + k - int(math.pow(2, j))][j]))return l1

通过分块求固定区间长度最值

1,首先将数组nums按照区间的长度k从左到右依次分为若干个长度均为k的小块

2 申请两个数组,preMax[i],postMax[i] {i 为数组的下标};preMax[i]表示在nums[i]元素所在的分块内作为最后一个元素的前缀最大值,postMax[i]表示在nums[i]元素所在的分块内作为第一个元素的后缀最大值
如下图所示,假设区间长度=3,数组nums = [1,3,-1,-3,5,3,6,7],i=3时,preMax[3] 表示在块2 i=3作为前缀最后一个元素的前缀最大值,很明显就nums[3]一个元素,就是nums[3],

通过一次正序遍历nums数组可以得到preMax数组
通过一次倒序遍历nums数组可以得到postMax数组
在这里插入图片描述

3 根据得到的postMax,preMax数组,可以快速求出任何一个区间[i, i + k - 1]中最值,这里有两个种情况,当i为k的整倍数或者不为k的整数倍

  • i为k的整数倍
    直接通过postMax[i]获取结果

  • 当i不为k的整数倍,那么[i, i + k - 1]一定时跨了两个小块,假设为[i,j - 1],[j, i + k - 1],其中j为后面那个小块的首位 元素,则可以取postMax[i]与preMax[ i + k - 1]的最大值作为结果
    下面为python代码的实现,用来求数组中所有区间为 k的最大值

class Solution:def maxSlidingWindow(self, nums: list[int], k: int) -> list[int]:# 分块思想preSum = [0] * len(nums)postSum = [0] * len(nums)for i in range(len(nums)):if i % k == 0:curr_max = nums[i]curr_max = max(curr_max, nums[i])preSum[i] = curr_maxcurr_max = nums[-1]for i in range(len(nums) - 1, -1, -1):if i % k == (k - 1):curr_max = nums[i]curr_max = max(curr_max, nums[i])postSum[i] = curr_maxl1 = []for i in range(len(nums) - k + 1):if i % k == 0:l1.append(postSum[i])else:l1.append(max(postSum[i], preSum[i + k - 1]))return l1
http://www.dtcms.com/wzjs/347623.html

相关文章:

  • Wordpress 阅读全部网络优化工程师主要做什么
  • 网站建设智能小程序网站建站推广
  • 武汉网站建设百家号济南网站优化排名推广
  • 网站平台搭建怎么弄的百度推广在哪里
  • 我做网站了圆通沈阳百度快照优化公司
  • 专门做学校政府的网站泰州seo网站推广
  • 镇江建设质量监督站网站广告投放平台有哪些
  • 什么网站可以兼职做鸭子网络培训研修总结
  • 国外网站大牛不懂英语可以做吗北京seo方法
  • 网站建设中+网页代码网络推广都需要做什么
  • 做女朋友网站关键词优化快速
  • 一个空间可以做几个网站中国知名网站排行榜
  • 安徽两学一做网站网络营销的优势和劣势
  • ps做网站ui济南百度快照推广公司
  • 影院网站建设sem是什么设备
  • 购物网站模板免费下载和业务多一样的平台
  • 公司网站里面页面链接怎么做西安seo优化培训
  • 做净化行业需要知道的网站深圳网站建设优化
  • 网站特效怎么做的b站黄页推广
  • 济南网站开发推广郑州网站建设制作公司
  • Wordpress网站开发收费seo标题优化是什么意思
  • 个人网站设计结构图站长之家ping检测
  • 招聘网站做两份简历网络工程师培训机构排名
  • 刘家窑网站建设百家号seo
  • 狗和女主人做爰网站百合seo培训
  • 正规手机网站怎么做西安百度百科
  • 还有那个网站平台做化妆品批发的怎么自己制作网站
  • 如何做网站营销凡科网站建站教程
  • 软件服务网站设计费如何做分录苹果cms永久免费全能建站程序
  • 淄博桓台网站建设报价推广产品的软文