banner
cells

cells

为美好的世界献上 code

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

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

給你兩個正整數:nntargettarget

如果數組 numsnums 滿足下述條件,則稱其為 美丽数組

  • nums.length==nnums.length == n
  • numsnums 由兩兩互不相同的正整數組成。
  • 在範圍 [0,n1][0, n-1] 內,不存在 兩個 不同 下標 iijj ,使得 nums[i]+nums[j]==targetnums[i] + nums[j] == target

返回符合條件的美丽数組所可能具備的 最小 和,並對結果進行取模 109+710^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<=1091 <= n <= 10^9
  • 1<=target<=1091 <= target <= 10^9

貪心#

class Solution {
public:
    int minimumPossibleSum(int n, int target) {
        const int mod = 1e9 + 7;
        int m = target / 2;
        if (n <= m) {
            return (long long) (1 + n) * n / 2 % mod;
        }
        return ((long long) (1 + m) * m / 2 + 
                ((long long) target + target + (n - m) - 1) * (n - m) / 2) % mod;
    }
};
載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。