leetcode 第698题 划分为k个相等的子集 python解法
最近在刷之前没有解决的题,我觉得挺难的,加上过年在家,日子安逸,所以这道题写了很长时间。╮(╯▽╰)╭
问题分析
这道题首先从字面上看,如果能将给定的数组划分k个相等的子集,那么这个数组的和一定能被k整除,所以这是第一个条件;另外,如果数组中最大的数大于整除后的商,那么这个数组也不满足,这是第二个条件,这两个条件可以放在前面作为初步的判断。
如果能被整除,那么说明每一个被划分的子集的和一定等于整除后的商(这里用avg表示)。
接下来用题目中的数组做例子,这个数组的总和能够被k=4整除(avg=5),所以进行下一步操作。接下来将原始排序,排完如下面所示:
排完序以后接下来从右向左遍历数组。我的想法是,先将第一个数(最大的数)配成avg,而且是尽量找大的配,加入某