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

合肥网站建设是什么百度下载安装app

合肥网站建设是什么,百度下载安装app,包头学做网站,合肥建设管理学院网站【LetMeFly】2829.k-avoiding 数组的最小总和:贪心(数学公式O(1)算出) 力扣题目链接:https://leetcode.cn/problems/determine-the-minimum-sum-of-a-k-avoiding-array/ 给你两个整数 n 和 k 。 对于一个由 不同 正整数组成的数…

【LetMeFly】2829.k-avoiding 数组的最小总和:贪心(数学公式O(1)算出)

力扣题目链接:https://leetcode.cn/problems/determine-the-minimum-sum-of-a-k-avoiding-array/

给你两个整数 nk

对于一个由 不同 正整数组成的数组,如果其中不存在任何求和等于 k 的不同元素对,则称其为 k-avoiding 数组。

返回长度为 nk-avoiding 数组的可能的最小总和。

 

示例 1:

输入:n = 5, k = 4
输出:18
解释:设若 k-avoiding 数组为 [1,2,4,5,6] ,其元素总和为 18 。
可以证明不存在总和小于 18 的 k-avoiding 数组。

示例 2:

输入:n = 2, k = 6
输出:3
解释:可以构造数组 [1,2] ,其元素总和为 3 。
可以证明不存在总和小于 3 的 k-avoiding 数组。 

 

提示:

  • 1 <= n, k <= 50

解题方法:贪心

构造一个长度为 n n n的数组,数组中任意两数之和不得为 k k k,如何构造?

我们可以将数组分成两个部分:小于 k k k的部分,大于等于 k k k的部分。

  • 对于小于 k k k的部分:

    a a a则不能有另外的 k − a k-a ka,有 1 1 1则不能有另外的 k − 1 k-1 k1

    那么我们怎么选?当然是选尽可能小的了(贪心)。

    我们从 1 1 1开始,选择 1 , 2 , 3 , … , min ⁡ ( n , ⌊ k 2 ⌋ ) 1, 2, 3, \dots, \min(n, \lfloor\frac{k}2\rfloor) 1,2,3,,min(n,2k⌋)即可。

  • 对于大于等于 k k k的部分:

    若小于 k k k的部分不足 n n n个,则还需要选择大于等于 k k k的数。

    k k k开始依次选取就好了,一定不存在另一个正整数与这个数的和为 k k k

尽可能多选小于 k k k的部分。附等差数列求和公式 s = ( 首项 + 尾项 ) × 项数 2 s=\frac{(首项+尾项)\times项数}2 s=2(首项+尾项)×项数

  • 时间复杂度 O ( 1 ) O(1) O(1)
  • 空间复杂度 O ( 1 ) O(1) O(1)

AC代码

C++
/** @Author: LetMeFly* @Date: 2025-03-26 13:08:18* @LastEditors: LetMeFly.xyz* @LastEditTime: 2025-03-26 13:43:41*/
/*
5 4
1 2 4 5 62 6
1 2∞ 1
1∞ 2
1 2∞ 3
1 3∞ 4
1 2∞ 5
1 2∞ 6
1 2 3∞ 7
1 2 3∞ 8
1 2 3 4∞ 9
1 2 3 4小于k的数最多从1加到k/2(下取整)
之后就可以从k开始k, k+1, k+2, ...了
*/
class Solution {
public:int minimumSum(int n, int k) {int to = min(n, k / 2);int ans = to * (to + 1) / 2;n -= to;ans += n * (k + k + n - 1) / 2;return ans;}
};
Python
'''
Author: LetMeFly
Date: 2025-03-26 13:45:41
LastEditors: LetMeFly.xyz
LastEditTime: 2025-03-26 13:47:07
'''
class Solution:def minimumSum(self, n: int, k: int) -> int:to = min(n, k // 2)n -= toreturn to * (to + 1) // 2 + n * (k + k + n - 1) // 2
Java
/** @Author: LetMeFly* @Date: 2025-03-26 13:48:53* @LastEditors: LetMeFly.xyz* @LastEditTime: 2025-03-26 13:48:58*/
class Solution {public int minimumSum(int n, int k) {int to = Math.min(n, k / 2);n -= to;return to * (to + 1) / 2 + n * (k + k + n - 1) / 2;}
}
Go
/** @Author: LetMeFly* @Date: 2025-03-26 13:50:19* @LastEditors: LetMeFly.xyz* @LastEditTime: 2025-03-26 13:50:45*/
package mainfunc minimumSum(n int, k int) int {to := min(n, k / 2)n -= toreturn to * (to + 1) / 2 + n * (k + k + n - 1) / 2
}

同步发文于CSDN和我的个人博客,原创不易,转载经作者同意后请附上原文链接哦~

千篇源码题解已开源

http://www.dtcms.com/wzjs/384268.html

相关文章:

  • 上海杨浦区网站建设建站流程新手搭建网站第一步
  • 建立英语seo网站管理招聘
  • 成都专门做公司网站的公司百度人工服务热线24小时
  • 湖南网站优化代运营seo系统推广
  • 软件公司组织架构百度seo排名优化
  • jsp做的网站答辩问题国内十大4a广告公司
  • 邯郸哪儿做网站好廊坊seo推广
  • php网站开发流程外贸公司一般怎么找客户
  • 网站做系统叫什么软件有哪些怎么看app的下载网址
  • wordpress与微信连接数据库操作南京seo关键词排名
  • 纯文本网站连接网站推广经验
  • 域名对网站有什么影响百度新闻发布
  • 营销策划方案网站上首页的seo关键词优化
  • 网站更新要怎么做网站seo分析报告案例
  • .net和php哪个做网站好百度竞价排名案例分析
  • 设计素材模板电脑突然多了windows优化大师
  • 做百度网站建立网站流程
  • 石岩做网站哪家好购物网站
  • 郫县网站制作青岛seo推广专员
  • 做网站要在阿里云上买几个贡献适合发软文的平台
  • 安陆做网站公司深圳网络营销外包公司推荐
  • 免费企业网站建设免费关于校园推广的软文
  • 广元做网站以网红引流促业态提升
  • 做ui的网站有哪些关键字挖掘爱站网
  • 手机网站建设新闻做百度推广销售怎么找客户
  • wordpress日志在哪seo优化软件免费
  • 网站起名字大全企业网站怎么做
  • b2c所有网站网站设计公司
  • 哪个网站做画册牛逼个人永久免费自助建站
  • 广州从化网站制作公司郑州网站优化平台