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

免费推广网站短视频深圳网络推广营销公司

免费推广网站短视频,深圳网络推广营销公司,响应式网站开发论文,wordpress什么是分页LeetCode每日一题 2735.收集巧克力 2735. 收集巧克力 - 力扣(LeetCode) 介绍 看题目看不懂,在评论区看到一个大哥解释,瞬间明白了。 一张桌子上有n件商品围成一圈,每件都有一个价签,它们构成数组nums。…

LeetCode每日一题

2735.收集巧克力

2735. 收集巧克力 - 力扣(LeetCode)

介绍

看题目看不懂,在评论区看到一个大哥解释,瞬间明白了。

一张桌子上有n件商品围成一圈,每件都有一个价签,它们构成数组nums。除了按照价签上的价格买东西之外,你还可以花x块钱把桌子转一下,把每件商品都对应到下一个价签,问把每种商品买一遍最少花多少钱

给你一个长度为 n 、下标从 0 开始的整数数组 nums ,表示收集不同巧克力的成本。每个巧克力都对应一个不同的类型,最初,位于下标 i 的巧克力就对应第 i 个类型。

在一步操作中,你可以用成本 x 执行下述行为:

  • 同时修改所有巧克力的类型,将巧克力的类型 ith 修改为类型 ((i + 1) mod n)th

假设你可以执行任意次操作,请返回收集所有类型巧克力所需的最小成本。

示例 1:

输入:nums = [20,1,15], x = 5
输出:13
解释:最开始,巧克力的类型分别是 [0,1,2] 。我们可以用成本 1 购买第 1 个类型的巧克力。
接着,我们用成本 5 执行一次操作,巧克力的类型变更为 [1,2,0] 。我们可以用成本 1 购买第 2 个类型的巧克力。
然后,我们用成本 5 执行一次操作,巧克力的类型变更为 [2,0,1] 。我们可以用成本 1 购买第 0 个类型的巧克力。
因此,收集所有类型的巧克力需要的总成本是 (1 + 5 + 1 + 5 + 1) = 13 。可以证明这是一种最优方案。

示例 2:

输入:nums = [1,2,3], x = 4
输出:6
解释:我们将会按最初的成本收集全部三个类型的巧克力,而不需执行任何操作。因此,收集所有类型的巧克力需要的总成本是 1 + 2 + 3 = 6 。

提示:

  • 1 <= nums.length <= 1000
  • 1 <= nums[i] <= 109
  • 1 <= x <= 109

思路

LeetCode看的思路,自己没啥思路,还是说自己算法太垃圾,还需多练

nums数组表示购买对应索引类型的巧克力所需要的代价,可以通过每次以代价x来改变(平移)nums数组的分布。

由于nums数组的长度为n,那么进行n次平移操作之后,进入循环。因此有意义的平移操作最多为n-1次。

那么可以使用一个数组costNums来记录每个类型的巧克力,在{0,1,2, …, n-1}次操作过程中购买所需的最小值。在k次操作完成后,将costNums累加并加上k*x,得到操作k次完成购买所需的总代价。

最后,在{0,1,2,…,n-1}次操作中,选择具有最小代价的那次操作。

代码

C++
class Solution {
public:long long minCost(vector<int>& nums, int x) {int n = nums.size();vector<int> costNums(nums);  // 初始操作 0 次的成本long long totalCost = accumulate(costNums.begin(), costNums.end(), 0LL); // 初始总成本// enumerate 0 to n-1 times operationfor (int k=1; k<n; k++){// 根据当前操作更新 costNums 数组for (int i=0; i<n; i++) {costNums[i] = min(costNums[i], nums[(i+k)%n]);}// 计算当前操作的总成本并与之前的总成本进行比较,保留最小的totalCost = min(totalCost, accumulate(costNums.begin(), costNums.end(), 0LL) + static_cast<long long>(k)*x);}return totalCost;}
};
Java
class Solution {public long minCost(int[] nums, int x) {int n = nums.length;int[] costNums = Arrays.copyOf(nums, n); // 初始操作 0 次的成本long totalCost = Arrays.stream(costNums).asLongStream().sum(); // 初始总成本for (int k = 1; k < n; k++) {// 根据当前操作更新 costNums 数组for (int i = 0; i < n; i++) {costNums[i] = Math.min(costNums[i], nums[(i + k) % n]);}// 计算当前操作的总成本long currentCost = Arrays.stream(costNums).asLongStream().sum() + (long) k * x;// 如果当前成本更小,更新总成本totalCost = Math.min(totalCost, currentCost);}return totalCost;}
}
http://www.ds6.com.cn/news/21966.html

相关文章:

  • 网站建设谁家好打开百度网页
  • 苏州高端网站建设公司百度图片搜索
  • 报纸门户网站建设方案今日刚刚发生的新闻
  • 聊城网站建设推广百度竞价被换着ip点击
  • 动漫做的游戏 迅雷下载网站网上哪里可以免费打广告
  • 赚钱黑渠道入口上海专业seo服务公司
  • 软件开发招标网站qq引流推广软件哪个好
  • 培训网页课程官网优化包括什么内容
  • 做的好的电商网站项目对网络营销的认识
  • 制作高端网站公司排名说到很多seo人员都转行了
  • 在网站做博客aso优化运营
  • 中标信息查询seo快速排名系统
  • 问问建设网站的人中国新闻最新消息
  • 新疆生产建设建设兵团医院网站凡科网建站系统源码
  • 惠州网站关键字优化百度权重提升
  • 一般网站的费用网站功能
  • 网站通过微信支付宝收钱怎么做网站制作郑州
  • 用cdr做网站设计尺寸要多少2023年8月新闻热点事件
  • 西安哪里做网站最大seo排名优化软件价格
  • 宝安高端网站建设哪家公司好爱站网关键词长尾挖掘
  • 江苏专业做网站的公司哪家好优化网站标题和描述的方法
  • 江西城乡建设网站软文形式推广产品
  • 运营网站开发工作搜狗站长平台主动提交
  • 沈阳网站推广优化公司哪家好汕头seo收费
  • 邯郸市建设局网站2017游戏挂机赚钱一小时20
  • 域名ip查询入口官网国内做seo最好的公司
  • 做彩票网站代理犯法吗6软件排名工具
  • 福州专业网站制作网站设计制作的服务怎么样
  • 江西汽车网站建设seo技术培训沈阳
  • 草桥做网站公司凡科建站官网登录