查找数组的相对“平衡点”

题目:根据一个数组,找出其平衡点,也就是该点左边的和等于右边的和。一个数组可能有多个平衡点。

注意:数组至少有3个元素,才能有平衡点存在

import java.util.Scanner;

public class FindBalancePoint {

    public static boolean findBalancePoint(int[] arr) {

        int sum = 0;
        boolean hasPoint = false;//判断是否有平衡点

        if( arr.length <= 2 ){      
            System.out.println("输入不符合要求,无平衡点");
        }
        else{
            for(int i = 0 ; i < arr.length ; i++)
                sum += arr[i];
            int sumLeft = 0;//左边的和
            int sumRight = sum - arr[0];//右边的和

            for(int j = 1 ; j < arr.length ; j++){
                sumLeft += arr[j-1];
                sumRight -= arr[j];

                if(sumLeft != sumRight)
                    continue;
                else{
                    System.out.print(arr[j]+" ");
                    hasPoint =true;
                }
            }
        }
        return hasPoint;
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("请输入一个数组,并用逗号隔开(至少包含三个元素):");
        String inputString = sc.next();
        String[] stringArray = inputString.split(",");
        int length = stringArray.length;
        int[] arr = new int[length];
        for(int i = 0;i<length;i++){
            arr[i]=Integer.parseInt(stringArray[i]);
        }

        if(!findBalancePoint(arr))
            System.out.println("输入的数组无平衡点");
        sc.close();
    }
}

这里写图片描述

这里写图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值