- package Atlight;
- /*
- * 写一个函数,返回给定序列的平衡点(任何一个),如果没有返回-1,假定这个序列可达到非常大。
- * 平衡点就是 左边元素和等于他右边元素和.
- */
- public class algorithm {
- public static void main(String[] args) {
- int arr[] = { 1, 2, 3, 4, 3, 2, 1 };
- System.out.println(getBalancePoint(arr));
- }
- // 寻找数组平衡点.算法复杂度O(n)空间复杂度O(1)
- public static int getBalancePoint(int[] src) {
- int sumLeft = 0;
- int sumRight = 0;
- int position = 0;
- for (int e : src) {
- sumRight += e;
- }
- sumRight -= src[0];
- for (position = 1; position < src.length - 1; position++) {
- sumLeft += src[position - 1];
- sumRight -= src[position];
- if (sumLeft == sumRight)
- return position;
- }
- return -1;
- }
- }
寻找数组平衡点
最新推荐文章于 2021-09-10 11:55:21 发布