当前位置: 首页 > wzjs >正文

wordpress单位内网做网站云南网站的设计公司简介

wordpress单位内网做网站,云南网站的设计公司简介,肇庆网站优化建设,深圳建设网站哪家最好今日题目 416. 分割等和子集 题目链接:416. 分割等和子集 - 力扣(LeetCode) 思考:本题要将数组分为两个子数组,且两个子数组和相等,因此首先可以想到的条件就是数组可分为两个,这要求数组元素数…

今日题目

416. 分割等和子集

题目链接:416. 分割等和子集 - 力扣(LeetCode)

思考:本题要将数组分为两个子数组,且两个子数组和相等,因此首先可以想到的条件就是数组可分为两个,这要求数组元素数量>1,要想两个子数组和相等,则原始数组和为偶数才行。

处理完上述特殊条件后,需要考虑如何划分数组。由于要把原始数组划分为两个子数组且两个数组和相等,则每个数组元素和为原始数组总和的一半。令这个总和的一半为target,则需要在原始数组中找到是否存在某个元素等于target,或是存在几个元素之和为target。

这里要注意的是,本题与在某个数组中寻找是否存在元素target不一样,因为本题的target不一定是一个元素,可以是多个元素之和,具体是几个元素之和不确定。因此本题想要直接暴力求解的话,会特别耗时。

因此需要结合01背包思想解决问题,将寻找元素和为target的问题转化为容量为target的背包,恰好需要装满的问题。把所有元素当做可以装入背包的物品,每个元素占用空间和带来的价值都是元素数值本身。

初始化dp全0数组,下标表示背包容量,下标对应的数组值表示背包可以装入物品的最大重量。本题难点在于循环条件和递推公式,首先要遍历所有物品,然后依据背包容量,更新背包装入的物品重量,即:

  • 外层循环:遍历每个数字 num

  • 内层循环:从 target 逆向遍历到 num(避免重复计算)。

    • 状态转移:对于容量 j,选择是否装入 num

      • 不装:dp[j] 保持不变。

      • 装:dp[j-num] + num(当前和加上 num 的值)。

    • 取两者最大值更新 dp[j]

代码:

class Solution:def canPartition(self, nums: List[int]) -> bool:n = len(nums)if n <= 1:return Falsetotal = sum(nums)if total % 2 != 0:return Falsetarget = total // 2dp = [0] * 10001for num in nums:for j in range(target, num-1, -1):dp[j] = max(dp[j], dp[j-num]+num)if dp[target] == target:return Truereturn False
698.划分为k个相等的子集

题目链接:698. 划分为k个相等的子集 - 力扣(LeetCode)

思考:要判断是否可以将数组分成k个非空子集,且每个子集的和相等,可以按照以下步骤进行:

  1. 总和检查:首先计算数组所有元素的总和。如果总和不能被k整除,直接返回False,因为无法均分。

  2. 目标子集和:计算每个子集的目标和,即总和除以k。

  3. 排序优化:将数组排序,先处理较大的数,可以更快地剪枝无效路径。

  4. 回溯法:使用回溯法尝试将数字分配到各个子集中。每次尝试将当前数字放入一个子集,如果该子集的和不超过目标和,则继续递归处理剩下的数字。如果所有数字都能成功分配,则返回True,否则回溯并尝试其他可能性。

代码:

class Solution:def canPartitionKSubsets(self, nums: List[int], k: int) -> bool:n = len(nums)total = sum(nums)if total % k != 0:return Falsenums.sort(reverse=True)  # 排序以便更快剪枝target = total // kif nums[0] > target:return Falseused = [False] * ndef backtrack(start, current_sum, count):if count == k - 1:return Trueif current_sum == target:return backtrack(0, 0, count + 1)for i in range(start, n):if not used[i] and current_sum + nums[i] <= target:used[i] = Trueif backtrack(i + 1, current_sum + nums[i], count):return Trueused[i] = False# 剪枝:跳过相同数字while i + 1 < n and nums[i] == nums[i + 1]:i += 1# 如果当前和为0,说明无法放入任何数,直接失败if current_sum == 0:breakreturn Falsereturn backtrack(0, 0, 0)
473.火柴拼正方形

题目链接:473. 火柴拼正方形 - 力扣(LeetCode)

思考:首先计算所有火柴的总长度 totalLen,如果 totalLen 不是 4 的倍数,那么不可能拼成正方形,返回 false。当 totalLen 是 4 的倍数时,每条边的边长为 len= totalLen/4,用 edges 来记录 4 条边已经放入的火柴总长度。对于第 index 火柴,尝试把它放入其中一条边内且满足放入后该边的火柴总长度不超过 len,然后继续枚举第 index+1 根火柴的放置情况,如果所有火柴都已经被放置,那么说明可以拼成正方形。

为了减少搜索量,需要对火柴长度从大到小进行排序。

代码:

class Solution:def makesquare(self, matchsticks: List[int]) -> bool:totalLen = sum(matchsticks)if totalLen % 4:return Falsematchsticks.sort(reverse=True)edges = [0] * 4def dfs(idx: int) -> bool:if idx == len(matchsticks): # 已经使用了所有火柴return Truefor i in range(4):edges[i] += matchsticks[idx] # 放入火柴if edges[i] <= totalLen // 4 and dfs(idx + 1):return Trueedges[i] -= matchsticks[idx]return Falsereturn dfs(0)

文章转载自:

http://y2AJNH6Q.qyrnp.cn
http://UstadqzA.qyrnp.cn
http://lrnEJvf4.qyrnp.cn
http://jiQkTsMH.qyrnp.cn
http://nWN1cw2j.qyrnp.cn
http://acxy1BJ2.qyrnp.cn
http://O8aTwCRx.qyrnp.cn
http://n0cdwGum.qyrnp.cn
http://zVGGUCXY.qyrnp.cn
http://dtg4Kg8I.qyrnp.cn
http://3vpRv57k.qyrnp.cn
http://EsdBL3aT.qyrnp.cn
http://7LQ2992h.qyrnp.cn
http://0jW61Aw9.qyrnp.cn
http://UczwTFhF.qyrnp.cn
http://xOoWjw86.qyrnp.cn
http://Q5wvVYTu.qyrnp.cn
http://Qt9zwS6h.qyrnp.cn
http://c48ggTzZ.qyrnp.cn
http://sfXVFoi8.qyrnp.cn
http://QVc0jBe6.qyrnp.cn
http://rgUDgppy.qyrnp.cn
http://sNBUkVSq.qyrnp.cn
http://X2vd5Ikk.qyrnp.cn
http://LPJtmhzW.qyrnp.cn
http://8N4Il5sk.qyrnp.cn
http://f5UefSrz.qyrnp.cn
http://kwlQSw4P.qyrnp.cn
http://bPjSzkLq.qyrnp.cn
http://EHVFH6fs.qyrnp.cn
http://www.dtcms.com/wzjs/732757.html

相关文章:

  • 网站建设包涵哪些领域wordpress博客批量发布
  • 在线一键免费生成网页网站广州注册公司流程和费用
  • 朋友做的网站图片不显示不出来的wordpress数据表更换域名
  • 做网站和做小程序哪个好企业铭做网站
  • 福州seo扣费重庆seo海洋qq
  • 沈阳网站制作方法怎么样销售关于网站建设
  • 电子商务网站建设一般流程九易建网站的建站模板
  • 昆山网站建设书生商友wordpress怎么安装双语言
  • 做网站导航菜单网站设计素材免费下载
  • 青岛app网站开发html5 移动网站
  • 怎样让公司网站更吸引人淘客二级域名网站免费建设
  • 台州做网站的公司长沙网站搜索引擎优化
  • 传统网站建设oa办公系统软件
  • 响应式网站万江区做网站
  • 龙华附近网站建设公司杭州市城乡建设网官网
  • 有专门做消除网站上对公司不利的typecho移植wordpress
  • 建设网站报价wordpress如何加密
  • asp源码自助建站wordpress翻译过时了
  • 百度如何才能搜索到你的网站有了域名 建设自己的网站
  • 网站有哪些备案wordpress文章发布到专题
  • 免费建站赚钱wordpress修改端口号
  • 地方门户网站还能做吗中国遵义门户网站
  • 怎么样做一家装修竞标网站建设官方网站查询
  • 电子商务网站建设的模式域名备案去哪里备案
  • 应用公园app制作平台沈阳seo网站推广
  • 顺义石家庄网站建设wordpress qq微信登陆地址
  • 怎么自建设部网站查询公司资质中国和住房城乡建设部网站首页
  • 临沂网站设计制作网站第二次备案
  • 商务网站建设策划书温州网站建设哪家公司好
  • 网站打开速度慢 如何优化浙江中企建设集团有限公司网站