前个星期去面试,这两天想起这个问题
给出一组数组{19 , 27 , 42 ...}
问题一:
这个数组 能否 分成三堆,并且三堆都是里面,每一堆数组的和,与其他两堆数组的和 是相等?问题二:如果能,请说说你的算法问题三:请问你这个算法的 运行时间(效率)如何?

解决方案 »

  1.   

    估计这个帖子会火,先写点东西
    第一,先判断数组全部的和sum是否是3的倍数.且数组中不能有大于(sum/3)的数
    第二,遍历所有子集并且求该子集的和,如果等于(sum/3)则保存起来(比存在list中,自己定义一个泛型)
    现在变成求list中所有拥有不重复元素且长度元素加起来等于原数组长度的3个集合
    第三,遍历所有list的长度为3并且加起来长度等于原数组长度的子集.(表达不太准确好像)
    第四,去掉list子集中的有重复项的.个人之见
    回头有时间去实现一下,看看时间复杂度.
    坐等高人.