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

怎么用网站做地标怎样申请免费网站

怎么用网站做地标,怎样申请免费网站,c语言做网站后台,网站制作长沙#左耳听风 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.yayakq.cn/news/133815/

相关文章:

  • 官方网站营销成都制作网页设计
  • 建设网站的目的和功能定位镇江网站外包
  • 南通网站定制哪家好wordpress网站名称
  • wordpress手机端网站模板下载失败陌陌引流推广软件
  • 石家庄网站外包公司上海做软件
  • 网站服务器地址查询方法重庆360网络推广
  • 建设银行信用卡网站下载黑群晖建设个人网站
  • 不会写程序如何做网站温州网站优化排名
  • 做自己的网站后台百度收录不到我的网站
  • 学校建网站网站 手机 app
  • 住建网站需多少钱网站建设制作合同模板
  • 电子商务的网站建设的可用性南通网站建设苏鹏网络
  • phpcms双语网站怎么做英文外贸网站制作
  • 还有什么网站可以做面包车拉货网站更换
  • 甜品店网站建设营销型网站的目标是
  • 高端网站哪个比较好阿里云服务器上做网站
  • 网站建设 技术团队机械加工图纸标注符号大全
  • 广州网站建设怎么样抖音代运营是做什么
  • 做网站的主流软件大冶seo网站优化排名推荐
  • vs网站开发源码汉中微信网站建设公司
  • 河北省廊坊市建设网站专业做相册书的网站
  • 包头教育云网站建设公司网站建站要多少钱一年
  • 怎么在百度上制作自己的网站建电子商务网站多少钱
  • 无锡制作网站公司哪家好营销自动化平台
  • 义乌网站建设联系方式网站怎么做一盘优化排名
  • 做招商类型的网站php开发网站优势
  • 网站推广与维护设计方案付费下插件wordpress
  • 做一个搜索引擎网站要多少钱做我女朋友网站p0rn视频
  • 论坛类网站开发报价网站开发语言为wap
  • 网站的内容建设中国建设业管理协会网站