题目如下:

解题思路:对于这种判断是否的题目,首先看看动态规划能不能解决。本题可以看成是从nums中任选i个元素,判断其和是否为sum(nums)/2,很显然从nums中任选i个元素的和的取值范围是[0,sum(nums)],这里就可以用一个dp数组来保存nums中任选i个元素的和的取值的和,记dp[v] = 1表示可以从nums中任选i个元素使得其和等于v,dp[v] = 0 则表示不可以。那么nums中任意元素nums[i]来说,只要找出dp[0,sum(nums[0:i-1])] 中所有为1的元素,记为j,可以有dp[nums[i] + j] = 1 if dp[j] = 1。

代码如下:

class Solution(object):
def canPartition(self, nums):
"""
:type nums: List[int]
:rtype: bool
"""
if sum(nums) % 2 == 1:
return False
nums.sort()
dp = [0] * (sum(nums)+1)
dp[nums[0]] = 1
total = nums[0]
for i in range(1,len(nums)):
for j in range(total+1):
if dp[j] == 1:
dp[j + nums[i]] = 1
total += nums[i]
#print dp
return dp[sum(nums)/2] == 1

【leetcode】416. Partition Equal Subset Sum的更多相关文章

  1. 【LeetCode】416. Partition Equal Subset Sum 解题报告(Python & C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 DFS 动态规划 日期 题目地址:https://l ...

  2. LN : leetcode 416 Partition Equal Subset Sum

    lc 416 Partition Equal Subset Sum 416 Partition Equal Subset Sum Given a non-empty array containing ...

  3. [LeetCode] 416. Partition Equal Subset Sum 相同子集和分割

    Given a non-empty array containing only positive integers, find if the array can be partitioned into ...

  4. Leetcode 416. Partition Equal Subset Sum

    Given a non-empty array containing only positive integers, find if the array can be partitioned into ...

  5. [leetcode]416. Partition Equal Subset Sum分割数组的和相同子集

    Given a non-empty array containing only positive integers, find if the array can be partitioned into ...

  6. 416. Partition Equal Subset Sum

    题目: Given a non-empty array containing only positive integers, find if the array can be partitioned ...

  7. 416 Partition Equal Subset Sum 分割相同子集和

    详见:https://leetcode.com/problems/partition-equal-subset-sum/description/ C++: class Solution { publi ...

  8. LC 416. Partition Equal Subset Sum

    题目 Given a non-empty array containing only positive integers, find if the array can be partitioned i ...

  9. [刷题] 416 Partition Equal Subset Sum

    要求 非空数组的所有数字都是正整数,是否可以将这个数组的元素分成两部分,使得每部分的数字和相等 最多200个数字,每个数字最大为100 示例 [1,5,11,5],返回 true [1,2,3,5], ...

随机推荐

  1. polly的几种常用方法

    参考资料:https://www.cnblogs.com/edisonchou/p/9159644.html 特征:可以实现一些代码的熔断和降级 代码: ////普通,其中 Fallback相当于降级 ...

  2. JS创建表格完整

    <!DOCTYPE> <html> <head> <meta charset=utf-8 /> <title>动态表格</title& ...

  3. JS 创建动态表格练习

    创建动态表格 1.1 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> &l ...

  4. memcpy不能复制内存重叠区域,memmove可以拷贝重叠内存

    http://blog.csdn.net/li_ning_/article/details/51418400 下面s和s2指向的内存区域有重叠,memcpy不能正确复制,src赋值给dst时,可能会修 ...

  5. poj2010 Moo University - Financial Aid 优先队列

    Description Bessie noted that although humans have many universities they can attend, cows have none ...

  6. Go-内存To Be

    做一个快乐的互联网搬运工- 逃逸分析 逃逸分析的概念 在编译程序优化理论中,逃逸分析是一种确定指针动态范围的方法——分析在程序的哪些地方可以访问到指针. 它涉及到指针分析和形状分析. 当一个变量(或对 ...

  7. 配置NAT实验

    实验拓扑: 下面先配置静态NAT:(将私网地址转为公网地址)内部地址到外部地址的1对1转换 1.先配置出口静态路由,指向公网入口路由器 2.nat static命令配置1对1的IP地址转换 3.测试: ...

  8. TP 验证码

    TP自带验证码类Verify.class.php 生成验证码 public function verify_c(){ session_start(); ob_clean(); $Verify = ne ...

  9. MYSQL 的七种join

    建表 在这里呢我们先来建立两张有外键关联的张表. CREATE DATABASE db0206; USE db0206; CREATE TABLE `db0206`.`tbl_dept`( `id` ...

  10. ubuntu下修改子网掩码

    1.修改网络配置 修改 /etc/netplan/01-network-manager-all.yaml 文件 vi /etc/netplan/01-network-manager-all.yaml ...