@@ -47,7 +47,7 @@ Tag : 「DFS」、「记忆化搜索」、「背包 DP」、「01 背包」
4747而 DFS 有「使用全局变量维护」和「接收返回值处理」两种形式。
4848
4949代码:
50- ``` Java []
50+ ``` Java
5151class Solution {
5252 public int findTargetSumWays (int [] nums , int t ) {
5353 return dfs(nums, t, 0 , 0 );
@@ -62,7 +62,9 @@ class Solution {
6262 }
6363}
6464```
65- ``` Java []
65+ 66+ 67+ ``` Java
6668class Solution {
6769 int ans = 0 ;
6870 public int findTargetSumWays (int [] nums , int t ) {
@@ -93,7 +95,7 @@ class Solution {
9395以上分析都在 [ (题解)403. 青蛙过河] ( https://leetcode-cn.com/problems/frog-jump/solution/gong-shui-san-xie-yi-ti-duo-jie-jiang-di-74fw/ ) 完整讲过。
9496
9597代码:
96- ``` Java []
98+ ``` Java
9799class Solution {
98100 public int findTargetSumWays (int [] nums , int t ) {
99101 return dfs(nums, t, 0 , 0 );
@@ -144,13 +146,13 @@ $$f[i][j] = f[i - 1][j - nums[i - 1]] + f[i - 1][j + nums[i - 1]]$$
144146因此,我们可以确定动规数组的大小。** 同时在转移时,对第二维度的使用做一个 ` s ` 的右偏移,以确保「负权值」也能够被合理计算/存储。**
145147
146148代码:
147- ``` Java []
149+ ``` Java
148150class Solution {
149151 public int findTargetSumWays (int [] nums , int t ) {
150152 int n = nums. length;
151153 int s = 0 ;
152154 for (int i : nums) s += Math . abs(i);
153- if (t > s) return 0 ;
155+ if (Math . abs(t) > s) return 0 ;
154156 int [][] f = new int [n + 1 ][2 * s + 1 ];
155157 f[0 ][0 + s] = 1 ;
156158 for (int i = 1 ; i <= n; i++ ) {
@@ -204,7 +206,7 @@ $$m = \frac{s - target}{2}$$
204206$$ f[i][j] = f[i - 1][j] + f[i - 1][j - nums[i - 1]] $$
205207
206208代码:
207- ``` Java []
209+ ``` Java
208210class Solution {
209211 public int findTargetSumWays (int [] nums , int t ) {
210212 int n = nums. length;
@@ -232,7 +234,7 @@ class Solution {
232234
233235### 最后
234236
235- 这是我们「刷穿 LeetCode」系列文章的第 ` No.494 ` 篇,系列开始于 2021年01月01日,截止于起始日 LeetCode 上共有 1916 道题目,部分是有锁题,我们将先将所有不带锁的题目刷完 。
237+ 这是我们「刷穿 LeetCode」系列文章的第 ` No.494 ` 篇,系列开始于 2021年01月01日,截止于起始日 LeetCode 上共有 1916 道题目,部分是有锁题,我们将先把所有不带锁的题目刷完 。
236238
237239在这个系列文章里面,除了讲解解题思路以外,还会尽可能给出最为简洁的代码。如果涉及通解还会相应的代码模板。
238240
0 commit comments