小工具知识网

当前位置: 首页 > 行业知识 > 代码随想录算法训练营|day42

行业知识

代码随想录算法训练营|day42

2026-10-29 11:07:17 来源:互联网转载

第九章 动态规划

  • 416.分割等和子集
  • 代���随想录文章详解
    背包类型求解方法
    0/1背包外循环nums,内循环target,target倒序且target>=nums[i]
    完全背包外循环nums,内循环target,target正序且target>=nums[i]
    组合背包外循环target,内循环nums,target正序且target>=nums[i]

    416.分割等和子集

    该问题转换为在数组中找到元素和target=sum(nums)/2即可,为0/1背包问题,dp[i]表示是否存在子集和为i。

    ()

    初始化:dp[0]=true,表示和为0,不需要选取任何元素,为真

    如果和为奇数或者数组中最大值大于target无法分成两个等和子集

    ()
    func canPartition(nums []int) bool {sum, maxNum := 0, 0for _, num := range nums {maxNum = max(maxNum, num)sum += num}if sum%2 != 0 {return false}target := sum / 2if maxNum > target {return false}dp := make([]bool, target + 1)dp[0] = truefor _, num := range nums {for i := target; i >= num; i-- {dp[i] = dp[i] || dp[i - num]}}return dp[target]}

    代码随想录文章详解

    01背包理论基础

    01背包理论基础(滚动数组)

    416.分割等和子集

上一篇:云端服务器怎么挂网站?

下一篇:铁拳7怎么更改服务器?