力扣2829题解

学习记录

2025.3.26

题目:

在这里插入图片描述

思路:

利用求和公式。

解题步骤:

1.计算 m:
m 表示我们可以安全取用的最大连续整数数量(从1开始),这些数不会违反两数之和等于 k 的条件
k/2 是临界点,因为超过这个值后,数字开始可能与前面的数字配对等于 k
2.公式求和·:
前 m 个数的和:使用等差数列求和公式 m*(m+1)/2
剩余 n-m 个数的和:从 k 开始取数,确保不与前面的数冲突,求和公式为 (k + (k + (n-m-1))) * (n-m)/2 = (2k + n-m-1) * (n-m)/2
合并两部分:(m*(m+1) + (2k + n-m-1)*(n-m)) / 2。
3.返回数组。

代码:

#define MIN(a, b) ((b) < (a) ? (b) : (a))

int minimumSum(int n, int k) {
    int m = MIN(k / 2, n);
    return (m * (m + 1) + (k * 2 + n - m - 1) * (n - m)) / 2;
}

class Solution {
    public int minimumSum(int n, int k) {
        int m = Math.min(k / 2, n);
        return (m * (m + 1) + (k * 2 + n - m - 1) * (n - m)) / 2;
    }
}


复杂度:

O(1)
O(1)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值