力扣动态规划-26【算法学习day.120】

前言

###我做这类文章一个重要的目的还是记录自己的学习过程,我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非常非常高滴!!!


习题

1.目标和

题目链接: 494. 目标和 - 力扣(LeetCode)

题面:

附上灵神代码:

java 复制代码
class Solution {
    private int[] nums;
    private int[][] memo;

    public int findTargetSumWays(int[] nums, int target) {
        int s = 0;
        for (int x : nums) {
            s += x;
        }
        s -= Math.abs(target);
        if (s < 0 || s % 2 == 1) {
            return 0;
        }
        int m = s / 2; // 背包容量

        this.nums = nums;
        int n = nums.length;
        memo = new int[n][m + 1];
        for (int[] row : memo) {
            Arrays.fill(row, -1); // -1 表示没有计算过
        }
        return dfs(n - 1, m);
    }

    private int dfs(int i, int c) {
        if (i < 0) {
            return c == 0 ? 1 : 0;
        }
        if (memo[i][c] != -1) { // 之前计算过
            return memo[i][c];
        }
        if (c < nums[i]) {
            return memo[i][c] = dfs(i - 1, c); // 只能不选
        }
        return memo[i][c] = dfs(i - 1, c) + dfs(i - 1, c - nums[i]); // 不选 + 选
    }
}

后言

上面是动态规划相关的习题,共勉

相关推荐
Excuse_lighttime4 分钟前
选择排序
java·开发语言·数据结构·算法·排序算法
Excuse_lighttime6 分钟前
插入排序和希尔排序
java·开发语言·数据结构·算法·排序算法
☆cwlulu7 分钟前
一句话总结一种排序算法,精炼
数据结构·算法·排序算法
胡晔可可8 分钟前
数据库中存储时候将字段为空串时转换成null
java·数据库
王老师青少年编程11 分钟前
【如何掌握CSP-J 信奥赛中的排序算法】
c++·算法·排序算法·csp·信奥赛
爱是小小的癌11 分钟前
数据结构与算法之排序算法-快速排序(分治)
java·开发语言·数据结构·算法·排序算法
✿ ༺ ོIT技术༻19 分钟前
剑指offer第2版:搜索算法(二分/DFS/BFS)
数据结构·算法
金融OG24 分钟前
100.13 AI量化面试题:支持向量机(SVM)如何处理高维和复杂数据集?
人工智能·python·算法·机器学习·支持向量机·数学建模·金融
技术小泽37 分钟前
算法基础之排序算法大总结1!!
java·数据结构·后端·算法·排序算法
illus10n_CHOU1 小时前
【项目总结】易到家家政服务平台 —— 派单调度(7)
java·spring boot·后端·学习·设计模式