前个星期去面试,这两天想起这个问题
给出一组数组{19 , 27 , 42 ...}
问题一:
这个数组 能否 分成三堆,并且三堆都是里面,每一堆数组的和,与其他两堆数组的和 是相等?问题二:如果能,请说说你的算法问题三:请问你这个算法的 运行时间(效率)如何?
给出一组数组{19 , 27 , 42 ...}
问题一:
这个数组 能否 分成三堆,并且三堆都是里面,每一堆数组的和,与其他两堆数组的和 是相等?问题二:如果能,请说说你的算法问题三:请问你这个算法的 运行时间(效率)如何?
第一,先判断数组全部的和sum是否是3的倍数.且数组中不能有大于(sum/3)的数
第二,遍历所有子集并且求该子集的和,如果等于(sum/3)则保存起来(比存在list中,自己定义一个泛型)
现在变成求list中所有拥有不重复元素且长度元素加起来等于原数组长度的3个集合
第三,遍历所有list的长度为3并且加起来长度等于原数组长度的子集.(表达不太准确好像)
第四,去掉list子集中的有重复项的.个人之见
回头有时间去实现一下,看看时间复杂度.
坐等高人.