全部评论
子节面试算法题都这么难嘛
如果是划分子数组不是子集 那倒还好吧 没有特别难
求sum;枚举分成的块数(比如案例中分成了3块);贪心地验证当前的这个分法是否可行(这里能求出子数组和=sum/块数,前提是能整除)
能否用双指针,两头走,左边值小于右边,则左边右走,左边大于右边,右边左走,等于,就先记录下来,又处理中间剩下的,没有值与之前相等的,就把前面的取出来又向中间增加数据处理?我自己想的,还没做
import org.junit.Test; /** * 题目: 一个数组a,长度n,划分为和相等的m个子数组,求m的最大值? * case:a=[2,4,3,1,1,1,3,6,1,1,1,3,9,1,1,1] * 答案:m=3 [2,4,3] [9] [3,6] */ public class test1 { public int getMax(int[] a){ int max=0,sum=0,num_max=0; for (int i=0;i<a.length>num_max){ num_max=a[i]; } } for (int i=0;i<a.length>max){ max=i; } } } } return max; } @Test public void test(){ int[] a=new int[]{3,7,2,4,5,6,9}; int b=getMax(a); System.out.println("最大值b:"+b); } }</a.length></a.length>
相关推荐
点赞 评论 收藏
分享