2025.7.3 学习

2025.7.3 学习

leetcode 416

image-20250703232841927

class Solution {
    public boolean canPartition(int[] nums) {
        int sum = 0,num, len = nums.length;
        for (int i = 0; i < len; i++) {
            sum += nums[i];
        }
        if (sum % 2 == 1) return false;
        boolean dp[][] = new boolean[len][sum + 1];
        sum /= 2;
        // for (int i = 0; i < len; i++) {
        //     for (int j = 0; j < sum; j++) {
        //         dp[i][j] = false;
        //     }
        // }
        dp[0][0] = true;
        dp[0][nums[0]] = true;
        for (int i = 1; i < len; i++) {
            for (int j = 0; j < sum+1; j++) {
                if (j >= nums[i]) {
                    dp[i][j] = dp[i - 1][j] | dp[i - 1][j - nums[i]];
                } else {
                    dp[i][j] = dp[i - 1][j];
                }
            }
        }
        //dp[i][j]=dp[i-1][j-nums[i]]||dp[i-1][j]
        return dp[len - 1][sum];
    }
}

注意我注释掉的部分,创建boolean数组默认就是全为false

本题思路是转化为0-1背包,二维dp,dp[i][j] ,i表示第i位元素,j表示和为j,dp[i][j]表示前i个元素是否能凑出和为j

study

学习kibana,grafana metrics,看kafka架构,明天可以来一个kafka的博客

posted @ 2025-07-03 23:29  vast_joy  阅读(17)  评论(0)    收藏  举报