Leetcode--416. 分割等和子集
给定一个只包含正整数的非空数组。是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。
注意:
每个数组中的元素不会超过 100
数组的大小不会超过 200
示例 1:
输入: [1, 5, 11, 5]
输出: true
解释: 数组可以分割成 [1, 5, 5] 和 [11].
示例 2:
输入: [1, 2, 3, 5]
输出: false
解释: 数组不能分割成两个元素和相等的子集.
思路:从数组中选取一些元素使他的和等于总和的一半,类似于背包问题
通过dp[][]来记录状态
dp[i][j]:表示选取范围为[0,i-1]的条件下和为j的情况
dp[i][j]状态与两个元素有关
1. dp[i-1][j],在[0,i-1]的情况下选取的元素和为j,不选取第i个元素,和仍为j
2. dp[i-1][j-nums[i]],选取第i个元素,那么如果之前存在和为j-nums[i]的情况,就说明和为j的情况存在
提交的代码:
class Solution {
public boolean canPartition(int[] nums) {
int i,sum=0;
for(i=0;i<nums.length;i++)
{
sum+=nums[i];
}
if(sum%2!=0)
{
return false;
}
int target = sum/2;
boolean dp[][] = new boolean[nums.length][target+1];
if(nums[0]<=target)
{
dp[0][nums[0]] = true;
}
for(i=1;i<nums.length;i++)
{
for(int j=0;j<=target;j++)
{
dp[i][j] = dp[i-1][j];
if(j>=nums[i])
{
dp[i][j] = dp[i-1][j] || dp[i-1][j-nums[i]];
}
}
}
for(i=0;i<nums.length;i++)
{
if(dp[i][target])
{
return true;
}
}
return false;
}
}
Leetcode--416. 分割等和子集相关推荐
- LeetCode 416 分割等和子集
LeetCode 416 分割等和子集 题目链接 给定一个只包含正整数的非空数组.是否可以将这个数组分割成两个子集,使得两个子集的元素和相等. 注意: 每个数组中的元素不会超过 100 数组的大小不会 ...
- leetcode - 416. 分割等和子集
416. 分割等和子集 -------------------------------------------- 给定一个只包含正整数的非空数组.是否可以将这个数组分割成两个子集,使得两个子集的元素和 ...
- LeetCode 416. 分割等和子集 【c++/java详细题解】
来自专栏<LeetCode高频面试题> 欢迎订阅 目录 1.题目 2.思路 3.二维c++代码 4.二维java代码 5.一维优化 6.一维c++代码 7.一维java代码 1.题目 给你 ...
- Java实现 LeetCode 416 分割等和子集
416. 分割等和子集 给定一个只包含正整数的非空数组.是否可以将这个数组分割成两个子集,使得两个子集的元素和相等. 注意: 每个数组中的元素不会超过 100 数组的大小不会超过 200 示例 1: ...
- [动态规划] leetcode 416. 分割等和子集
问题描述: 分割等和子集:给你一个只包含正整数的非空数组 nums .请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等. 例子:输入nums = {1, 5, 11 , 5 ...
- leetcode 416. 分割等和子集
分割等和子集题解集合 DFS 记忆化搜索 记忆化搜索的另一种写法 动态规划 「滚动数组」解法 「一维空间优化」解法 DFS 思路 题意就是:给你一个非空数组,和为sum,你能否找到一个子序列,和为su ...
- LeetCode 416. 分割等和子集(动态规划)
1. 题目 给定一个只包含正整数的非空数组. 是否可以将这个数组分割成两个子集,使得两个子集的元素和相等. 注意: 每个数组中的元素不会超过 100 数组的大小不会超过 200 示例 1: 输入: [ ...
- LeetCode 416. 分割等和子集(动态规划)(0-1背包)
题目描述 给定一个只包含正整数的非空数组.是否可以将这个数组分割成两个子集,使得两个子集的元素和相等. 注意: 每个数组中的元素不会超过 100 数组的大小不会超过 200 示例 1: 输入: [1, ...
- LeetCode #416 分割等和子集
题目: 给你一个 只包含正整数 的 非空 数组 nums .请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等. 示例 1: 输入:nums = [1,5,11,5] 输出:true ...
- LeetCode | 416.分割等和子集
给你一个 只包含正整数 的 非空 数组 nums .请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等. 示例 1:输入:nums = [1,5,11,5] 输出:true 解释:数组 ...
最新文章
- mysql 断开的管道_ClientAbortException: java.net.SocketException: 断开的管道
- 【吐血整理】java正则表达式详解
- [SQL] 外卖系统数据库设计
- phpMyAdmin import.php 跨站脚本漏洞
- Android中的Touch事件
- Servlet读取文件的最好的方式
- 前端学习(2256)如何解决冲突
- Seata多微服务互相调用_全局分布式事物使用案例_Order-Module order微服务的配置搭建---微服务升级_SpringCloud Alibaba工作笔记0060
- Win10下python不同版本同时安装并解决pip共存问题
- 10分钟学习简略五子棋 源码+注释教学
- 【PostgreSQL-9.6.3】一般视图
- CGCS2000大地坐标系、北斗坐标系(BDCS)与WGS84坐标系的差异
- 爬虫(七):爬取猫眼电影top100
- JavaScript BOM 随笔谈
- JAVA代码实现计算器功能
- 除了技校 哪里还可以学计算机技术,我打算去读技校,技校毕业了去工作有钱了,还可以读技校吗?(我想多学一门技术)...
- Add-Migration
- 但得有心能自奋,何愁他日不雄飞
- 大学生怎么入门Android,从一个大学生的角度打开K30PRO,以及对手机圈子的一些看法...
- 年度目标进度和完成进度对比
热门文章
- LeetCode 501. 二叉搜索树中的众数(中序遍历)
- 在微型计算机中8m,第一部分 计算机基础知识部分习题(答案)
- postforobject 设置代理_Spring RestTemplate和代理身份验证
- matlab多种分配方案_基于MATLAB的水资源优化分配问题动态规划解法
- 初始化环境配置:CentOS 7.4x64 系统安装及基础配置
- 用Vue.js开发微信小程序:开源框架mpvue解析
- 工作中如何做好技术积累
- 要成为一个 Java 架构师得学习哪些知识以及方法?
- 常用的后端性能优化六种方式:缓存化+服务化+异步化等
- 论文浅尝 | LGESQL: 结合线性有向图以及普通有向图的自然语言转换SQL语句模型...