【Leetcode 每日一题】2829. k-avoiding 数组的最小总和

问题背景

给你两个整数 n n n 和 k k k。

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

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

数据约束

  • 1 ≤ n , k ≤ 50 1 \le n, k \le 50 1≤n,k≤50

解题过程

由于题中所给的数据都是正数,那么和为 k k k 的数对,一定是由一个小于 ⌊ k 2 ⌋ \lfloor \frac{k}{2} \rfloor ⌊2k⌋ 的数和一个大于 ⌊ k 2 ⌋ \lfloor \frac{k}{2} \rfloor ⌊2k⌋ 构成的。

在上限已知的情况下,要使总和最小,应选择数对中较小的那个,并且避免让另一个出现。

这时,整个结果序列是唯一确定的,可以看作两个等差数列,用求和公式就可以解决问题。

具体实现

java 复制代码
class Solution {
    public int minimumSum(int n, int k) {
        // 如果所需数字数量小于 k / 2,就不必计算第二部分的结果
        int m = Math.min(k / 2, n);
        return (m * (m + 1) + (k * 2 + n - m - 1) * (n - m)) / 2;
    }
}
相关推荐
2301_800256117 小时前
数据结构基础期末复习例题
数据结构·算法
变量未定义~7 小时前
单调栈-四元组问题
数据结构·算法
冷小鱼7 小时前
AI Agent 核心算法:任务规划(Planning)的深度技术解析
人工智能·算法·planning
退休倒计时8 小时前
【每日一题】LeetCode 78. 子集 TypeScript
算法·leetcode·typescript
旖-旎8 小时前
《LeetCode 978 最长湍流子数组 || LeetCode 139 单词拆分》
c++·算法·leetcode·动态规划
cxr8288 小时前
第16章 跨域迁移与能力融合——从专家到通才
人工智能·算法·智能体·hermes
学究天人8 小时前
数学公理体系大全:Comprehensive Collection of Mathematical Axiom Systems(补充卷9)
人工智能·线性代数·算法·数学建模·动态规划·原型模式·抽象代数
Keven_118 小时前
算法札记:图的存储方式
算法·图论
斯文的八宝粥8 小时前
SERL:让真机强化学习从“难用”走向“可复现”的强化学习框架 ----(4)算法篇(DrQ vs VICE)
算法
yangdaxiageo8 小时前
算法时代的“心智置顶“:《功夫女足》如何构建GEO正向飞轮
人工智能·科技·算法·aigc