zvvq技术分享网

LeetCode DayDynamic Programming Part 4(leetcode codeforces)

作者:zvvq博客网
导读494. 目标总和 给你一个整数数组 nums 和一个整数目标。 您想要通过在 nums 中的每个整数之前添加符号“+”和“-”之一来构建 nums 的表达式,然后连接所有整数。 例如,如果 nums = [2,

zvvq好,好zvvq

494. 目标总数给你一个整数数组 nums 和一个整数目标。

zvvq.cn

您想要以在 nums 中的每个整数以前添加符号“+”和“-”之一来构建 nums 的关系式,随后联接全部整数。

内容来自samhan

比如,假如 nums =[2,1],你可以在 2 以前添加一个“+”,在 1 以前添加一个“-”,并将它们相互连接搭建关系式“+2-1”。

内容来自zvvq,别采集哟

回到您可以搭建的不同表达式的总数,其数值为目标。实例1: 内容来自samhan666

键入:nums = [1,1,1,1,1],目标=3

内容来自samhan666

导出:5 本文来自zvvq

表明:有 5 种分派标记的办法,使 nums 之和为目标3. 内容来自zvvq,别采集哟

-1+ 1 + 1 + 1 + 1 =3

zvvq好,好zvvq

+1- 1 + 1 + 1 + 1 =3 本文来自zvvq

+1+ 1 - 1 + 1 + 1 =3

内容来自samhan666

+1+ 1 + 1 - 1 + 1 =3 zvvq好,好zvvq

+1+ 1 + 1 + 1 - 1 =3 zvvq好,好zvvq

实例2:键入:nums = [1],目标 = 1 zvvq好,好zvvq

导出:1限定:

zvvq好,好zvvq

100-1000初始页面 内容来自samhan666

虽然回朔在这儿很有用,我们可以使用动态规划来解决这个问题,并实现较低的时间复杂度。

本文来自zvvq

publicintfindTargetSumWays(int[]nums,inttarget){ 内容来自samhan666

/ 内容来自samhan666

sum(neg)+sum(pos)=sum(nums);

zvvq

sum(pos)-sum(neg)=target; 内容来自samhan

sum(pos)=(sum(nums)+target)/2

内容来自zvvq,别采集哟

*/

内容来自samhan

intsum=Arrays.stream(nums).sum(); 内容来自samhan666

//thatmeansthesumofthepositivenumberisinvalid,becausethe nums donotconcludefloat

zvvq

if((sum+target)%2!=0||Math.abs(target)>sum){ 内容来自zvvq

return0; copyright zvvq

} 内容来自samhan

//herewefindthesummaryofthepositivenumbers zvvq.cn

intpos=(sum+target)>>1; 内容来自zvvq,别采集哟

//dp[i][j]arraymeansforeachindexelement`i`(nums[i]),ifwewanttoreachthesumofthepositivenumber`j`,wewillhavehowmanymethods copyright zvvq

int[][]dp=newint[nums.length+1][pos+1]; zvvq

//ifwewanttoreach0wewillhave 1 waysthatmeanswechoosenothingandthereisnothing.

内容来自samhan666

dp[0][0]=1; zvvq.cn

//if(nums[0]j){

zvvq.cn

dp[i][j]=dp[i-1][j]; zvvq好,好zvvq

}else{ 本文来自zvvq

dp[i][j]=dp[i-1][j]+dp[i-1][j-nums[i-1]]; zvvq.cn

} 内容来自samhan666

} 内容来自zvvq

}

zvvq好,好zvvq

//Arrays.stream(dp).map(Arrays::toString).forEach(System.out::println); copyright zvvq

returndp[nums.length][pos];

本文来自zvvq

}

内容来自samhan

手记1、复位dp数组很重要特别是这儿重要的是要搞清楚0的内涵以上就是LeetCode DayDynamic Programming Part 4的详细内容,大量请关注其他类似文章!

zvvq.cn