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

乌鲁木齐做网站公司哪家好百度宣传推广费用

乌鲁木齐做网站公司哪家好,百度宣传推广费用,支持微信支付的网站开发,贵阳网站建设 赶集#左耳听风 ARST 打卡活动重启# 目录 一、题目 二、解决方法一 三、解决方法二 关于 ARTS 的释义 —— 每周完成一个 ARTS: ● Algorithm: 每周至少做一个 LeetCode 的算法题 ● Review: 阅读并点评至少一篇英文技术文章 ● Tips: 学习至少一个技术技巧 ● Shar…

#左耳听风 ARST 打卡活动重启#

目录

一、题目

二、解决方法一

三、解决方法二 


关于 ARTS 的释义 —— 每周完成一个 ARTS:
● Algorithm: 每周至少做一个 LeetCode 的算法题
● Review: 阅读并点评至少一篇英文技术文章
● Tips: 学习至少一个技术技巧
● Share: 分享一篇有观点和思考的技术文章

 希望通过此次活动能聚集一波热爱技术的人,延续好奇、探索、实践、分享的精神。


一、题目

给定一个长度为 n 的整数数组 nums 。

假设 arrk 是数组 nums 顺时针旋转 k 个位置后的数组,我们定义 nums 的 旋转函数  F 为:

F(k) = 0 * arrk[0] + 1 * arrk[1] + ... + (n - 1) * arrk[n - 1]
返回 F(0), F(1), ..., F(n-1)中的最大值 。

生成的测试用例让答案符合 32 位 整数。

示例 1:

输入: nums = [4,3,2,6]
输出: 26
解释:
F(0) = (0 * 4) + (1 * 3) + (2 * 2) + (3 * 6) = 0 + 3 + 4 + 18 = 25
F(1) = (0 * 6) + (1 * 4) + (2 * 3) + (3 * 2) = 0 + 4 + 6 + 6 = 16
F(2) = (0 * 2) + (1 * 6) + (2 * 4) + (3 * 3) = 0 + 6 + 8 + 9 = 23
F(3) = (0 * 3) + (1 * 2) + (2 * 6) + (3 * 4) = 0 + 2 + 12 + 12 = 26
所以 F(0), F(1), F(2), F(3) 中的最大值是 F(3) = 26 。


示例 2:

输入: nums = [100]
输出: 0

提示:

n == nums.length
1 <= n <= 105
-100 <= nums[i] <= 100

二、解决方法一

class Solution:def maxRotateFunction(self, nums: List[int]) -> int:n = len(nums)f = [0] * nfor i in range(n):cur = nums[i]f[i] = cur * (i + 1)res = f[0]for i in range(1, n):res = max(res, f[i] + f[i - 1])return res

这段代码实现了一个函数 `maxRotateFunction`,用于计算给定整数数组 `nums` 顺时针旋转 `k` 个位置后,所有旋转后的数组元素之和的最大值。

具体实现过程如下:

1. 首先定义一个长度为 `n` 的列表 `f`,其中 `f[i]` 表示将数组 `nums` 顺时针旋转 `i` 个位置后,所有元素之和。初始时,`f[i] = i * nums[i]`。

2. 然后遍历整个数组 `nums`,依次计算出每个位置的旋转后元素之和,并将其保存到列表 `f` 中。

3. 最后,从头开始遍历列表 `f`,找到其中的最大值即可。因为每次旋转都会使数组中的某个元素变为零,所以最大的旋转后元素之和就是第一个元素加上最后一个元素的值乘以数组长度减一。因此,最终返回的是 `f[0] + f[n-1]` 的最大值。

总的来说,这段代码的时间复杂度为 O(n),空间复杂度为 O(1)。

三、解决方法二 

class Solution:def maxRotateFunction(self, nums: List[int]) -> int:n = len(nums)f = [0] * nfor i in range(n):cur = nums[i]f[i] = cur * (i + 1)res = f[0]for i in range(1, n):# 将数组分为两部分,前半部分为递增序列,后半部分为递减序列left, right = 0, i - 1while left < right:# 如果当前元素小于它的下一个元素,说明它应该在后半部分if nums[left] <= nums[right]:break# 否则将它移动到前半部分temp = nums[left]nums[left] = nums[right]nums[right] = templeft += 1right -= 1# 计算前半部分和后半部分的元素之和,并更新最大值res = max(res, f[i] + sum(f[:left]) + sum(f[right+1:]))return res

这段代码实现了一个函数 `maxRotateFunction`,用于计算给定整数数组 `nums` 顺时针旋转 `k` 个位置后,所有旋转后的数组元素之和的最大值。

具体实现过程如下:

1. 首先定义一个长度为 `n` 的列表 `f`,其中 `f[i]` 表示将数组 `nums` 顺时针旋转 `i` 个位置后,所有元素之和。初始时,`f[i] = i * nums[i]`。

2. 然后遍历整个数组 `nums`,依次计算出每个位置的旋转后元素之和,并将其保存到列表 `f` 中。

3. 对于数组中的每个元素,我们可以将其分为两部分,前半部分为递增序列,后半部分为递减序列。具体来说,我们从数组的两端开始向中间扫描,如果当前元素小于它的下一个元素,说明它应该在后半部分;否则将它移动到前半部分。这个过程可以用双指针法实现。

4. 将数组分为两部分后,我们可以计算出前半部分和后半部分的元素之和,并更新最大值 res。具体来说,我们可以将前半部分的元素之和求出来,然后加上后半部分的元素之和即可。

5. 如果旋转次数 `k` 小于等于数组长度 `n`,则将问题转化为求解 F(k+1) 的最大值;否则,F(k) 就是最终答案。

总的来说,这段代码的时间复杂度为 O(n^2),空间复杂度为 O(1)。

http://www.shuangfujiaoyu.com/news/47728.html

相关文章:

  • 一个空间怎么放2个网站搜索引擎优化结果
  • 网站建设一般好久到期国外域名注册平台
  • 商学院网站建设建议外链推广网站
  • 建设论坛网站自学seo搜索引擎优化是做什么的
  • 石景山区建设委员会网站网络推广软文范文
  • 帝国cms网站地图生成中国国家人事人才培训网证书查询
  • 家政的网站怎么做免费网站安全软件下载
  • 政府网站信息建设工作广州外包网络推广公司
  • 浙江做网站多少钱关键词优化哪家强
  • 网站服务器自己做seo优化啥意思
  • 做园区门户网站的需求分析制作网页模板
  • 行业前10的网站建设公汕头seo网站推广
  • 建筑人才网 中高端招聘网站百度开发者平台
  • 黄冈论坛交友重庆seo主管
  • 重庆百度网站快速排名手机制作网页
  • 做英语题的网站苏州关键词优化软件
  • 沈阳做网站大约要多少钱外贸网站推广
  • 那些因素会影响网站的排名位置网络营销活动策划方案
  • 常见的网络广告南京百度seo排名优化
  • 东莞手机网站模板广州seo推广
  • 网站建设捌金手指专业9做一个网站需要多少钱
  • 网站院长信箱怎么做重庆百度地图
  • 网站制作 那种语言好站内推广
  • 毕业设计做网站难吗注册google账号
  • 中国铁建商城电子商务平台seo中心
  • 卖水果网站建设的策划书口碑营销公司
  • 现在中国空间站有几个人网站推广优化公司
  • HTML网站制作设计百度游戏app下载
  • 网站注册会绑定式收费吗百度指数查询
  • 做教育的网站需要资质吗优化大师客服电话