diff --git a/src/main/java/leetcode/editor/cn/FourXy4Wx.java b/src/main/java/leetcode/editor/cn/FourXy4Wx.java new file mode 100644 index 0000000..d8f21ea --- /dev/null +++ b/src/main/java/leetcode/editor/cn/FourXy4Wx.java @@ -0,0 +1,64 @@ +//小力将 N 个零件的报价存于数组 `nums`。小力预算为 `target`,假定小力仅购买两个零件,要求购买零件的花费不超过预算,请问他有多少种采购方案。 +// +// +//注意:答案需要以 `1e9 + 7 (1000000007)` 为底取模,如:计算初始结果为:`1000000008`,请返回 `1` +// +// +//**示例 1:** +//>输入:`nums = [2,5,3,5], target = 6` +//> +//>输出:`1` +//> +//>解释:预算内仅能购买 nums[0] 与 nums[2]。 +// +//**示例 2:** +//>输入:`nums = [2,2,1,9], target = 10` +//> +//>输出:`4` +//> +//>解释:符合预算的采购方案如下: +//>nums[0] + nums[1] = 4 +//>nums[0] + nums[2] = 3 +//>nums[1] + nums[2] = 3 +//>nums[2] + nums[3] = 10 +// +//**提示:** +//- `2 <= nums.length <= 10^5` +//- `1 <= nums[i], target <= 10^5` +// 👍 25 👎 0 + +package leetcode.editor.cn; +//LCP 28:采购方案 +public class FourXy4Wx{ + public static void main(String[] args) { + //测试代码 + Solution solution = new FourXy4Wx().new Solution(); + } + //力扣代码 + //leetcode submit region begin(Prohibit modification and deletion) +class Solution { + public int purchasePlans(int[] nums, int target) { + int[] sort = new int[target]; + long[] count = new long[target]; + for (int num : nums) { + if (num < target) { + sort[num] += 1; + } + } + long sum = 0; + for (int i = 1; i < target; i++) { + sum += sort[i]; + count[i] = sum; + } + long result = 0; + for (int num : nums) { + if (target > num) { + result += num <= target - num ? count[target - num] - 1 : count[target - num]; + } + } + return (int) (result / 2 % (Math.pow(10, 9) + 7)); + } +} +//leetcode submit region end(Prohibit modification and deletion) + +} \ No newline at end of file diff --git a/src/main/java/leetcode/editor/cn/FourXy4Wx.md b/src/main/java/leetcode/editor/cn/FourXy4Wx.md new file mode 100644 index 0000000..d9d013f --- /dev/null +++ b/src/main/java/leetcode/editor/cn/FourXy4Wx.md @@ -0,0 +1,27 @@ +小力将 N 个零件的报价存于数组 `nums`。小力预算为 `target`,假定小力仅购买两个零件,要求购买零件的花费不超过预算,请问他有多少种采购方案。 + +注意:答案需要以 `1e9 + 7 (1000000007)` 为底取模,如:计算初始结果为:`1000000008`,请返回 `1` + + +**示例 1:** +>输入:`nums = [2,5,3,5], target = 6` +> +>输出:`1` +> +>解释:预算内仅能购买 nums[0] 与 nums[2]。 + +**示例 2:** +>输入:`nums = [2,2,1,9], target = 10` +> +>输出:`4` +> +>解释:符合预算的采购方案如下: +>nums[0] + nums[1] = 4 +>nums[0] + nums[2] = 3 +>nums[1] + nums[2] = 3 +>nums[2] + nums[3] = 10 + +**提示:** +- `2 <= nums.length <= 10^5` +- `1 <= nums[i], target <= 10^5` +