题目:判断某个数组是否可以等分,其中分割数组的某个元素不算在内。比如:{2,5,1,1,1,1,4,7,5,2,1,7}可以四等分成{2,5}{1,1,1,4}{5,2}{7}

简介:

public class HasEqualSubArray
{

public static int hasEqualSubArray(int[] input){
    //如果长度小于3则不存在等分
    if(null == input || input.length < 3){
        return -1;
    }
    
    int subSum = 0;//总和相等的字数组的总和大小
    //i作为分隔点,根据i前面的总和,判断i后面的所有字数组是否有相同的总和
    for(int i = 1; i < input.length-1; i++){
        subSum += input[i-1];

        int laterSum = 0;
        boolean hasEqualSum = true;
        for(int j = i+1; j < input.length; j++){
            laterSum = laterSum + input[j];
            if(laterSum < subSum){
                if(j == input.length-1){
                    hasEqualSum = false;
                }
                continue;
            }else if(laterSum == subSum){
                laterSum = 0;
                j++;
            }else{
                hasEqualSum = false;
                break;
            }
        }
        
        if(hasEqualSum){
            return subSum;
        }else if(i == input.length-2){
            return -1;
        }
    }
    return -1;
}

public static void main(String[] args)
{
    int[] case1 = new int[]{2,5,1,1,1,1,4,7,5,2,1,7};
    int[] case2 = new int[]{2,24,1};
    int[] case3 = new int[]{2,2,2,2,2,2,2};
    int[] case4 = new int[]{1,2,3,0,6,0,3,3};
    System.out.println(hasEqualSubArray(case1));
}

}

目录
相关文章
|
6月前
|
算法 测试技术 C#
【数学】LeetCode1526: 形成目标数组的子数组最少增加次数
【数学】LeetCode1526: 形成目标数组的子数组最少增加次数
|
6月前
7-7 念数字 (15 分)(用数组简化判断过程)
7-7 念数字 (15 分)(用数组简化判断过程)
50 0
|
算法
代码随想录算法训练营第二十六天 | LeetCode 39. 组合总和、40. 组合总和 II、131. 分割回文串
代码随想录算法训练营第二十六天 | LeetCode 39. 组合总和、40. 组合总和 II、131. 分割回文串
49 0
代码随想录Day22 LeetCode T39 组合总和 T40 组合总和II T131 分割回文串
代码随想录Day22 LeetCode T39 组合总和 T40 组合总和II T131 分割回文串
33 0
|
存储 Python
Python实现划分数组为连续数字的集合
Python实现划分数组为连续数字的集合
105 0
|
算法 Java 网络架构
代码随想录训练营day27| 39. 组合总和 40.组合总和II 131.分割回文串
代码随想录训练营day27| 39. 组合总和 40.组合总和II 131.分割回文串
|
算法 索引
【基础算法】浅浅刷个小题 # 搜索插入位置 # 各位相加 # 寻找数组的中心下标 #
【基础算法】浅浅刷个小题 # 搜索插入位置 # 各位相加 # 寻找数组的中心下标 #
|
存储 算法 前端开发
前端算法-除自身外数组的乘积
前端算法-除自身外数组的乘积
|
索引
力扣刷题记录——434. 字符串中的单词数、448. 找到所有数组中消失的数字、455. 分发饼干
力扣刷题记录——434. 字符串中的单词数、448. 找到所有数组中消失的数字、455. 分发饼干
124 0
力扣刷题记录——434. 字符串中的单词数、448. 找到所有数组中消失的数字、455. 分发饼干
排序数组中只出现一次的数字(中等难度,三种方法)
排序数组中只出现一次的数字(中等难度,三种方法)
113 0
排序数组中只出现一次的数字(中等难度,三种方法)