当前位置: 首页 > 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.yayakq.cn/news/908283/

相关文章:

  • 建设通网站公路查询好看开源企业网站模板
  • html页面能做成网站吗保定网站设计优势
  • 广东网站定制seo数据优化教程
  • 优秀公司网站腾讯云服务器免费体验
  • 河南建设厅官方网站杭州网站建设seo优化
  • 招商网站建设大概多少钱广州网站优化关键词方法
  • 在线支付网站制作网页版qq游戏大厅
  • 电商类网站有哪些可信网站身份验证
  • 网站建设优化服务案例吉林长春有做网站的吗
  • 官方网站开发网店托管代运营公司
  • 给个网站带颜色2022八月热点新闻摘抄
  • 一些做的好的网站老域名查询
  • 乐清市网站建设公司百度排名 网站标题
  • 海南省建设注册中心网站中国十大网络安全龙头
  • 合肥网站建设优化中小企业公司简介范本
  • 公司做网站怎么样可以在线做护理题的网站
  • wordpress按钮支付宁波seo网页怎么优化
  • 网站开发入门书籍2018学网站开发的软件有哪些
  • 衡阳做网站的宿州市做网站的公司
  • 旅游网站建设策划书模板wordpress评论框必填加星
  • 杭州 网站建站做门户网站cms
  • 内蒙古住房与建设官方网站做网站需要画原型图么
  • 淄博网站seo公司网站如何制作
  • 增加网站收录设计公司网站运营
  • 校园网站如何建立策划类网站
  • 仪征网站建设wordpress英文企业主题下载
  • 网站建设费如何账务处理wordpress 临时域名
  • 辖网站建设 网站设计平安网站做的太差
  • 做爰网站贴吧wordpress手机模板
  • 云南旅行社网站建设千阳县住房和城乡建设局网站