leetcode 698. Partition to K Equal Sum Subsets(分成K个相等和的子集)

别再怕非观测区了!手把手教你用移相法搞定PMSM单电阻FOC的电流重构难题 本文详细解析了永磁同步电机(PMSM)单电阻FOC系统中非观测区的电流重构难题,重点介绍了移相法的工程实践。通过STM32平台的具体实现和调试指南,帮助工程师有效解决相电流检测中的采样窗口不足问题,提升系统稳定性和性能。 阅读详情

Given an array of integers nums and a positive integer k, find whether it’s possible to divide this array into k non-empty subsets whose sums are all equal.

Example 1:

Input: nums = [4, 3, 2, 3, 5, 2, 1], k = 4
Output: True
Explanation: It’s possible to divide it into 4 subsets (5), (1, 4), (2,3), (2,3) with equal sums.

Note:

1 <= k <= len(nums) <= 16.
0 < nums[i] < 10000.

给出一个数组,要分成k个非空子数组,使每个子数组的和都相等。

思路:
每个小组可以是不连续的,考虑DFS遍历
首先求数组的和sum,因为每个小组的和相等,所以每个小组的和应该是sum/k。当sum/k不是整数时,直接返回false。
当一个小组满足和为sum/k时,到下一小组,k减去1,同时和清零。
DFS的流程:

dfs(...):
  边界条件
  for i = start to end
    if(visited[i]) continue
    visited[i] = true
    dfs(...)
    visited[i] = false

这里边界条件就是和到了sum/k时,就要继续寻找下一小组,小组数还剩下0时,就返回true
所以要传入现在计算的和,目标和sum/k,还有剩下的小组数k

为了方便剪枝,先把数组排序,从大到小遍历,这样当前和超过sum/k,就不需要再迭代下去了。
但是这个剪枝的判断不要写在循环里,因为在循环里一旦返回false,整个循环就结束了,后面小的也不会再遍历了。所以也放在边界条件里面。

class Solution {
    boolean[] visited;
    int n = 0;
    public boolean canPartitionKSubsets(int[] nums, int k) {
        n = nums.length;
        int sum = 0;
        
        for(int i = 0; i < n; i ++) {
            sum += nums[i];
        }
        
        if(sum % k != 0) {
            return false;
        }
        
        visited = new boolean[n];
        Arrays.sort(nums);
        
        return dfs(nums, k, n-1, sum/k, 0);
    }
    
    boolean dfs(int[] nums, int k, int start, int target, int cur) {
        if(k == 0) {
            return true;
        }
        
        if(cur > target) {
            return false;
        }
        
        if(cur == target) {
            return dfs(nums, k-1, n-1, target, 0);
        }
        
        for(int i = start; i >= 0; i --) {
            if(visited[i]) continue;
            visited[i] = true;
            if(dfs(nums, k, i-1, target, nums[i]+cur)) return true;
            visited[i] = false;
        }
        
        return false;
    }
}

参考资料

信号完整性仿真SI之Cadence Sigrity SPEED2000_眼图仿真(四) 今天给大家分享一个仿真的操作流程,是关于Cadence Sigrity SPEED2000的时域波形仿真和眼图仿真。我们会经常看见硬件工程师调试示波器上的一些信号的波形变化,其实这些也可以通过仿真电路的搭建来做出投板前的仿真,来优化走线,以减少版本的迭代次数。如果要和实际的信号保持一致,就要求仿真设置的参数和实际的参数保持一致,这也是仿真的重点和难点。下面先让我们了解一下Cadence Sigrity SPEED2000时域仿真的操作流程: 1.仿真模式选择与文件导入 选择Cadence Sigrity下的 阅读详情

相关推荐

Nsight Compute内存图表实战:如何快速定位CUDA内核的内存瓶颈(附配置截图)

本文详细介绍了如何使用Nsight Compute的Memory Chart功能快速定位和诊断CUDA内核中的内存性能瓶颈。通过解析内存图表中的逻辑与物理单元节点、连线颜色含义,并结合实战案例(如低L1缓存命中率、共享内存Bank冲突、全局内存访问未合并),指导开发者从可视化数据回溯至源代码,进行精准有效的内存访问优化,从而提升GPU程序性能。

zeta9的博客 479

leetcode专题训练 698. Partition to K Equal Sum Subsets(窝也不清楚为什么就跳到这道题来做了)

1.最开始的方法回溯法。需要注意只要找出k-1种和为subSum的方案即可,因为剩下的数和一定为subSum。WA了几次,主要WA点如下: 1 10, 10, 10, 7, 6, 7…时,如果想要凑30,那么有两种方案,一种是10,10,10,一种是10, 7, 7, 6,所以要遍历所有可能的情况。 2 如果从比较小的数开始遍历的话,遍历的次数会很多,比如nums = [4,5,3,2,5,5,5...

Ema1997的博客 218

STM32H7多通道ADC数据采集实战:CubeMX配置ADC1/2/3+DMA/BDMA+Cache避坑全记录

本文详细解析了STM32H7多通道ADC数据采集的实战配置,涵盖CubeMX中ADC1/2/3与DMA/BDMA的协同设置及Cache一致性处理。通过硬件架构分析、DMA优化技巧和Cache避坑指南,帮助开发者实现高精度数据采集,适用于电机控制、环境监测等嵌入式系统。

weixin_28744613的博客 292

LeetCode 698 Partition to K Equal Sum Subsets (dfs 剪枝)

Given an integer array nums and an integer k, return true if it is possible to divide this array into k non-empty subsets whose sums are all equal. Example 1: Input: nums = [4,3,2,3,5,2,1], k = 4 Output: true Explanation: It is possible to divide it int

Tc的专栏 493

FFmpeg实战:SEI自定义数据在RTMP推流中的高效嵌入

本文深入探讨了如何利用FFmpeg在RTMP推流中高效嵌入SEI自定义数据。通过将SEI比作与视频帧同步的“小纸条”,文章详细解析了H.264码流中SEI的结构与位置,并提供了命令行与API编程两种实战方法,帮助开发者实现直播答题、AI元数据回传等场景下的帧级精准数据同步。

weixin_29304021的博客 325

ADS新手必看:5分钟搞定Smith圆图阻抗匹配(附详细操作截图)

本文为射频电路设计新手提供了在ADS软件中快速使用Smith圆图进行阻抗匹配的实战指南。通过清晰的步骤和操作截图,详细演示了如何从负载阻抗点出发,通过添加电感和电容元件,在5分钟内完成向50欧姆标准阻抗的匹配,并介绍了仿真验证与性能调优的方法,帮助工程师和学生直观掌握这一核心技能。

weixin_29261711的博客 394

LeetCode 698. Partition to K Equal Sum Subsets(划分为K个相等的子集)

题目描述: Given an array of integersnumsand a positive integerk, find whether it's possible to divide this array intoknon-empty subsets whose sums are all equal. 给定一个整数数组nums和一个正整数k,找出是否有可能把...

Shishishi888的博客 533

边缘AI工业落地:YOLO26-Seg + RK3588 NPU 极致部署(低功耗+实时实例分割,工业场景全覆盖)

本次实战汇总了「YOLO26-Seg+RK3588 NPU」工业边缘部署中最常见、最致命的8个坑点,所有坑点均来自真实工业项目,解决方案均为零代码/一键操作,无需复杂配置,能让你少走90%的弯路,节省大量时间,必看必记!❌ RKNN转换报错「算子不支持/模型加载失败」→ ✅ 导出ONNX时必须指定opset=12,重新导出即可,RK3588唯一兼容版本;❌ 分割mask错位/轮廓模糊 → ✅ 导出ONNX时加,并保证RKNN的归一化参数与YOLO26一致,零代码修复;

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1718

OJ刷题------[算法课分支限界法]Partition to K Equal Sum Subsets(划分k个相等的子集)

Partition to K Equal Sum Subsets(划分k个相等的子集)

qq_44258878的博客 400

什么是 SAP PCE?

SAP Private Cloud Edition 是一种基于云计算的部署模式,它结合了公有云的灵活性和私有云的安全性,为企业提供了量身定制的云服务。在 PCE 环境中,SAP 托管和维护客户的应用系统(如 SAP S/4HANA、SAP SuccessFactors 或 SAP BW/4HANA),同时客户拥有更高的定制化权限。专属环境:每个客户在云中拥有独立的资源,这保障了更高的安全性和性能。全面托管:SAP 提供基础架构、系统管理和更新服务,降低了客户的运维成本。灵活扩展。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 2246

Python爬虫实战:基于异步爬虫与机器学习的数据采集——以电商平台在线评论有用性分析为例

内容涵盖爬虫原理、反爬虫策略应对、数据清洗、数据存储以及简单的数据分析预览,并为后续利用机器学习模型(如逻辑回归、随机森林)分析评论有用性打下坚实的数据基础。特别是在电子商务领域,在线评论作为UGC的一种主要形式,深刻影响着消费者的购买决策和商家的信誉体系。然而,平台上的评论质量参差不齐,充斥着大量无意义的灌水、广告甚至虚假评论。因此,如何自动识别和筛选出“有用”的评论,成为了学术界和工业界共同关注的焦点。我们选择目前Python爬虫领域最前沿、效率最高的技术组合,以确保爬虫的稳定性、速度和可扩展性。

2201_76125261的博客 107

[LeetCode] Partition to K Equal Sum Subsets

题目分析这题虽然归在DP里面,但是最后其实用的是dfs进行求解的。因为这题看起来如果使用dfs会更加的直观,和之前的combination sum2之类的其实会比较相似。 这题的关键问题在于超时了,我也不明白为什么会超时,但是最后我把sort那部分给去掉就没问题了,但是这部分只是O(logN),可能是因为排序之后会导致找的这个过程变慢,反而是无序的更容易找到问题的解。时间复杂度分析时间复杂度,由于

qq_34035179的博客 336

Python爬取谷歌学术全攻略:基于Playwright与Asyncio的高效、抗反爬虫实践

同时,文章将详细解析爬虫过程中可能遇到的各种挑战,如IP封锁、验证码、动态内容加载等,并提供切实可行的解决方案。self.logger.info(f"第 {current_page} 页解析完成,共找到 {len(page_results)} 条结果。:谷歌学术的HTML结构并非一成不变,其CSS类名和标签结构可能会发生变化,且不同地区、不同语言的界面可能存在差异,增加了数据解析的难度。self.logger.info(f"开始搜索关键词: '{keyword}',计划爬取 {max_pages} 页")

2201_76125261的博客 1550

LeetCode //C - 698. Partition to K Equal Sum Subsets

【代码】LeetCode //C - 698. Partition to K Equal Sum Subsets。

Made in Code 1645

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

[leetcode]698. Partition to K Equal Sum Subsets

[leetcode]698. Partition to K Equal Sum Subsets Analysis 终于抽到敬业福啦 哈哈哈—— [每天刷题并不难0.0] Given an array of integers nums and a positive integer k, find whether it’s possible to divide this array into ...

weixin_32135877的博客 305

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

LeetCode 698. Partition to K Equal Sum Subsets 划分为k个相等的子集(典型递归问题)

LeetCode 698. Partition to K Equal Sum Subsets 划分为k个相等的子集:典型递归问题698. Partition to K Equal Sum Subsets 划分为k个相等的子集题目描述示例:解答代码 698. Partition to K Equal Sum Subsets 划分为k个相等的子集 题目描述 Given an array of inte...

importsys的博客 433

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

LeetCode--698. Partition to K Equal Sum Subsets

416. Partition Equal Subset Sum class Solution { public static boolean[] record; public static int sum; public static boolean canPartition(int[] nums) { sum = 0; recor...

To_be_thinking的博客 177

Partition to K Equal Sum Subsets Leetcode #698 题解[Python]

题目来源 https://leetcode.com/problems/partition-to-k-equal-sum-subsets/description/ 题目描述 Given an array of integers nums and a positive integer k, find whether it’s possible to divide this array...

Wayne_Mai的博客 700

leetcode-698-Partition to K Equal Sum Subsets

问题题目:[leetcode-698]思路能想到的是搜索的思路,但是不知道怎么用。 参考了[698. Partition to K Equal Sum Subsets]看了别人的代码,知道这个题搜索的技巧在于,对于每一个元素nums[i],枚举每一个子数组的当前位置。这也是一种枚举策略。并且,这个题目只有这么理解枚举,才能做出来。代码(wa)下面枚举的思路没有错,就是这个思路。但是TLE。clas

Kang_TJU的博客 1307

leetcode 698. Partition to K Equal Sum Subsets | 698. 划分为k个相等的子集(回溯法)

题目 https://leetcode.com/problems/partition-to-k-equal-sum-subsets/ 题解 一上来以为是 dp(想到了左神讲的,将一个数组分成两个尽可能相等的部分那道题),再一想,原来是 backtracing。 class Solution { public boolean canPartitionKSubsets(int[] nums, int k) { int sum = 0; for (int n : nums

寒泉 4万+

【Leetcode】698. Partition to K Equal Sum Subsets

题目地址: https://leetcode.com/problems/partition-to-k-equal-sum-subsets/ 给定一个数组AAA,和一个正整数kkk,问是否能将AAA拆为kkk个子集,并且每个子集的和相等。 法1:DFS + 剪枝。 import java.util.Arrays; public class Solution { public boolean canPartitionKSubsets(int[] nums, int k) { if (n

数学、算法爱好者的博客 390

Leetcode 698 Partition to K Equal Sum Subsets

这k个子集每个子集的元素和假设为a。当当前子集的值小于等于需要的值的时候我们可以放,并且回溯。当最后一个数字被放入并且每个桶的元素和都能够满足为a时,那么就说明能够分成k份。给一个数组,要求把数组里的元素分成k个子集,满足每个子集中数的总和是相等的。问是否能分成k个子集。想象你有k个桶,然后你有n个小球,你要做的是把这n个小球放进k个桶里,问能不能放成。最暴力的办法就是遍历所有的球,看看第一个桶能不能放,第二个桶能不能放。剪枝:1. 可以从大到小排序,这样可以先放大的数字,子集会更早达到元素和a。

xxxmmc的博客 424

LeetCode 698 Partition to K Equal Sum Subsets

Problem Description: Given an array of integersnumsand a positive integerk, find whether it's possible to divide this array intoknon-empty subsets whose sums are all equal. 输入是一个整型数组和一个正整数...

dianguju2418的博客 183

[Swift]LeetCode698. 划分为k个相等的子集 | Partition to K Equal Sum Subsets

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/)➤GitHub地址:https://github.com/strengthen/LeetCode➤原文地址:https://www.cnblogs.com/stren...

weixin_30885111的博客 161

LeetCode 698. Partition to K Equal Sum Subsets(深搜剪枝)

题目来源:https://leetcode.com/problems/partition-to-k-equal-sum-subsets/ 问题描述 698.Partition to K Equal Sum Subsets Medium Given an array of integersnumsand a positive integerk, find whether it's p...

da_kao_la的博客 449

698. Partition to K Equal Sum Subsets

文章目录1 理解题目2 分析2.1进一步优化2.2 根据花花酱解答 1 理解题目 Given an array of integers nums and a positive integer k, find whether it’s possible to divide this array into k non-empty subsets whose sums are all equal. 输入:一个int数组nums,一个int k 规则:将nums分成k个子数组,每个子数组的和相等 输出:true:如

约定的博客 394
上一篇: leetcode 801. Minimum Swaps To Make Sequences Increasing(变成升序列的最小交换次数)
下一篇: leetcode 450. Delete Node in a BST(二叉搜索树删除节点)
蓝羽飞鸟
博客等级 码龄8年 1万+粉丝 727原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蓝羽飞鸟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值