博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Leetcode: Combination Sum IV && Summary: The Key to Solve DP
阅读量:6259 次
发布时间:2019-06-22

本文共 1783 字,大约阅读时间需要 5 分钟。

Given an integer array with all positive numbers and no duplicates, find the number of possible combinations that add up to a positive integer target.Example:nums = [1, 2, 3]target = 4The possible combination ways are:(1, 1, 1, 1)(1, 1, 2)(1, 2, 1)(1, 3)(2, 1, 1)(2, 2)(3, 1)Note that different sequences are counted as different combinations.Therefore the output is 7.Follow up:What if negative numbers are allowed in the given array?How does it change the problem?What limitation we need to add to the question to allow negative numbers?

DP 解法: the key to solve DP problem is to think about how to create overlap, how to re-solve subproblems(怎么制造复用)

Bottom up dp:

1 public class Solution { 2     public int combinationSum4(int[] nums, int target) { 3         if (nums==null || nums.length==0) return 0; 4         Arrays.sort(nums); 5         int[] dp = new int[target+1]; 6         dp[0] = 1; 7         for (int i=1; i<=target; i++) { 8             for (int j=0; j

Better Solution(Bottom-up)不sort也成:

1 public int combinationSum4(int[] nums, int target) { 2     int[] comb = new int[target + 1]; 3     comb[0] = 1; 4     for (int i = 1; i < comb.length; i++) { 5         for (int j = 0; j < nums.length; j++) { 6             if (i - nums[j] >= 0) { 7                 comb[i] += comb[i - nums[j]]; 8             } 9         }10     }11     return comb[target];12 }

 

 

Follow up:

I think if there are negative numbers in the array, we must add a requirement that each number is only used one time, or either positive number or negative number should be used only one time, otherwise there would be infinite possible combinations.

For example, we are given:
{1, -1}, target = 1,
it's obvious to see as long as we choose n 1s and (n-1) -1s, it always sums up to 1, n can be any value >= 1.

转载地址:http://swhsa.baihongyu.com/

你可能感兴趣的文章
Azkaban Install and Schedule Job
查看>>
不仅是NRA球赛,手术也在VR直播了!
查看>>
android 空调遥控器——简单发送内容
查看>>
数字比较
查看>>
MS CRM 2011 Form与Web Resource在JScript中的相互调用
查看>>
Oracle下定时删除归档日志脚本
查看>>
thinkphp-删除delete函数
查看>>
SQL Server dbcc inputbuffer
查看>>
eclipse导入svn项目,项目却没有svn的标记
查看>>
1、Cacti配置安装、监控Cisco交换机
查看>>
Windows Server 2012版本区别
查看>>
Linux系统安全加固基础
查看>>
vnx vmax分盘过程
查看>>
php断点续传之分割合并文件
查看>>
Lesson 5-Exchange server 2010 Transfer mails in public network
查看>>
Chrome源码剖析【三】
查看>>
windows系统自带命令查看硬件信息,怎样dos命令查看硬盘和内存/CPU信息
查看>>
Nginx基础应用--------基于CentOS6源码安装
查看>>
流媒体服务器之nginx的rtmp模块
查看>>
AChartEngine中属性XYMultipleSeriesRenderer和XYSeriesRender属性详解
查看>>