常见算法技巧


1、给定一个正数int型数组arr,和一个正数目标值target,随意从数组中取出任意个数字(不能重复取)求和,请问有多少种取法可以使总和刚好等于target

动态规划,空间压缩:

class Solution{
    public void solve(int[] arr, int target) {
        int[] dp = new int[target + 1];
        dp[0] = 1;
        for (int n: arr) {
            for (int i = target; i >= n; i--) {
                dp[i] = dp[i - n];
            }
        }
        return dp[target];
    }
}