Skip to content
目录

2834. 找出美丽数组的最小和

难度:中等

地址:https://leetcode.cn/problems/find-the-minimum-possible-sum-of-a-beautiful-array/

给你两个正整数:ntarget

如果数组 nums 满足下述条件,则称其为 美丽数组

  • nums.length == n.
  • nums 由两两互不相同的正整数组成。
  • 在范围 [0, n-1] 内,不存在 两个 不同 下标 ij ,使得 nums[i] + nums[j] == target
  • 返回符合条件的美丽数组所可能具备的 最小 和,并对结果进行取模 10^9 + 7

示例 1:

:n = 2, target = 3

:4

:nums = [1,3] 是美丽数组。

  • nums 的长度为 n = 2 。
  • nums 由两两互不相同的正整数组成。
  • 不存在两个不同下标 i 和 j ,使得 nums[i] + nums[j] == 3 。 可以证明 4 是符合条件的美丽数组所可能具备的最小和。

示例 2:

:n = 3, target = 3

:8

:nums = [1,3,4] 是美丽数组。

  • nums 的长度为 n = 3 。
  • nums 由两两互不相同的正整数组成。
  • 不存在两个不同下标 i 和 j ,使得 nums[i] + nums[j] == 3 。 可以证明 8 是符合条件的美丽数组所可能具备的最小和。

示例 3:

:n = 1, target = 1

:1

:nums = [1] 是美丽数组。

提示:

  • 1 <= n <= 10^9
  • 1 <= target <= 10^9

题解:

方法一:贪心

alt text

js
/**
 * @param {number} n
 * @param {number} target
 * @return {number}
 */
var minimumPossibleSum = function (n, target) {
    const mod = 1000000007;
    const m = Math.floor(target / 2);
    if (n <= m) {
        return (((1 + n) * n) / 2) % mod;
    }
    return (
        (((1 + m) * m) / 2 + ((target + target + (n - m) - 1) * (n - m)) / 2) %
        mod
    );
};