当前位置: 首页 > news >正文

【算法题】2518. 好分区的数目

题目:

给你一个正整数数组 nums 和一个整数 k 。

分区 的定义是:将数组划分成两个有序的 组 ,并满足每个元素 恰好 存在于 某一个 组中。如果分区中每个组的元素和都大于等于 k ,则认为分区是一个好分区。

返回 不同 的好分区的数目。由于答案可能很大,请返回对 109 + 7 取余 后的结果。

如果在两个分区中,存在某个元素 nums[i] 被分在不同的组中,则认为这两个分区不同。

示例 1:

输入:nums = [1,2,3,4], k = 4
输出:6
解释:好分区的情况是 ([1,2,3], [4]), ([1,3], [2,4]), ([1,4], [2,3]), ([2,3], [1,4]), ([2,4], [1,3]) 和 ([4], [1,2,3]) 。
示例 2:

输入:nums = [3,3,3], k = 4
输出:0
解释:数组中不存在好分区。
示例 3:

输入:nums = [6,6], k = 2
输出:2
解释:可以将 nums[0] 放入第一个分区或第二个分区中。
好分区的情况是 ([6], [6]) 和 ([6], [6]) 。

提示:

1 <= nums.length, k <= 1000
1 <= nums[i] <= 10^9

java代码:

class Solution {private static final int MOD = (int) 1e9 + 7;public int countPartitions(int[] nums, int k) {var sum = 0L;for (var x : nums) sum += x;if (sum < k * 2) return 0;var ans = 1;var f = new int[k];f[0] = 1;for (var x : nums) {ans = ans * 2 % MOD;for (var j = k - 1; j >= x; --j)f[j] = (f[j] + f[j - x]) % MOD;}for (var x : f)ans = (ans - x * 2 % MOD + MOD) % MOD; // 保证答案非负return ans;}
}
http://www.lryc.cn/news/122491.html

相关文章:

  • 编写守护进程
  • stable-diffusion-webui启动No Python at ‘C:\xxx\xxx\python.exe‘
  • 面试热题(合并两个有序列表)
  • QT生成Word PDF文档
  • 阿里云服务器搭建WordPress建站教程基于Windows系统
  • 动态链接(8/11)
  • Python 之 Http 获取网页的 html 数据,并去掉 html 格式等相关信息
  • 干不完根本干不完,我也不想加班,快来围观时间管理大师
  • 常见设计模式
  • Android之版本号、版本别名、API等级对应关系(全)(一百六十二)
  • Redis的简介,安装(Linux、Windows),配置文件的修改---详细介绍
  • Vscode-工具使用
  • Ceph Reef版本 RBD 性能测试:80万写IOPS(10节点、60个NVMe SSD)
  • 微信小程序调用map数据 并在wxml中对数组进行截取的操作
  • 前端项目打包
  • venv使用教程及pyvenv与python3-venv的区别
  • 协程(一)单机--》并发--》协程
  • P1722 矩阵 II
  • 【数据结构】树和二叉树的概念及结构
  • 8.1.tensorRT高级(3)封装系列-模型编译过程封装,简化模型编译代码
  • 化工行业案例 | 甄知科技助力万华化学重构IT服务价值,打造信息中心ERP!
  • day6 STM32时钟与定时器
  • 【JavaEE进阶】SpringBoot 配置文件
  • ResNet创新点总结
  • Scratch 之 3D 介绍及教程
  • 最强自动化测试框架Playwright(19)- 事件
  • 静态网页和动态网页区别
  • 美国服务器有哪些类型?
  • 【基因检测人工智能】如何使用JAVASCRIPT在HTML文档内部增加一个段落
  • unittest单元测试