原文见:
http://www.iteye.com/topic/600079
平衡点:比如int[] numbers = {1,3,5,7,8,25,4,20}; 25前面的总和为24,25后面的总和也是24,25这个点就是平衡点;假如一个数组中的元素,其前面的部分等于后面的部分,那么这个点的位序就是平衡点
要求:返回任何一个平衡点
思路:数组两边同时求和,只需一次遍历数组,统计求和次数count,如果count为数组长度-1,那么存在平衡点。
写篇日记,记录一下自己的代码:
bug是,{1,0,0,0,1}存在多个平衡点,下面的程序只能找到中间的0;{1,0,0,1}有2个平衡点,下面的程序却找不到。其他的bug还没有发现。
public static void getBalancePoint(int[] arg){
if(arg==null){
System.out.println("array is null...");
return;
}
if(arg.length<3){
System.out.println("array's length is smaller than 3...no balance...");
return;
}
if(arg.length==3){
if(arg[0]==arg[2]){
System.out.println("array's balance is : "+arg[1]);
}else{
System.out.println("array has no balance...");
}
return;
}
int totalHead=0; //前部分总和(假设数组下标小的部分表示前)
int totalEnd=0; //后部分总和
int head=0; //前部分的数组下标
int end=arg.length-1; //后部分的数组下标
boolean addHead=true; //是否累加前部分
boolean addEnd=true; //是否累加后部分
int addCount=0; //总共累加次数
while(head<end){
if(addHead){ //前部分依次累加
totalHead+=arg[head];
addCount++;
}
if(addEnd){ //后部分依次累加
totalEnd+=arg[end];
addCount++;
}
if(totalHead<totalEnd){ //只允许前部分累加
head++;
addHead=true;
addEnd=false;
}else if(totalHead>totalEnd){ //只允许后部分累加
end--;
addHead=false;
addEnd=true;
}else{ //前后同时累加
head++;
end--;
addHead=true;
addEnd=true;
}
} //end while
if(addCount==(arg.length-1)){ //存在平衡点
System.out.println("array's balance is : "+arg[head]);
}else{
System.out.println("array has no balance...");
}
}
分享到:
相关推荐
查找数组的平衡点。 平衡点是索引的左侧等于索引的右侧的位置。 此函数返回平衡点索引数组。 安装 npm install balance-points bower install balance-points 用法 const balancepoints = require ( 'balance-...
这些选项可以在精度和计算速度之间找到平衡点。 通过刮擦标准数学程序包,还可以自动生成元素操作。 使用汇编代码针对amd64结构优化了各种功能。 要在项目中轻松交换narray包,请使用别名导入,如下所示: ...
平衡二叉树大部分操作和二叉查找树类似,主要不同在于插入删除的时候平衡二叉树的平衡可能被改变,并且只有从那些插入点到根结点的路径上的结点的平衡性可能被改变,因为只有这些结点的子树可能变化。 平衡二叉树的...
简单的初级菜鸟上传的数据结构试验报告,我是大二学的数据结构,主要是帮助那些一点都不会的更菜的菜鸟~!
(5)求关节点和重连通分量(Get_artical) (6)求最短路径 弗洛伊德算法(shortpath_Floyd) 迪杰斯特拉算法(shortpath_DIJ) 9. 存储管理 (1)边界标识法 (Boundary_tag_method) (2)伙伴系统 (Buddy_...
平衡点 阵列中的领导者 最低平台 按组反转数组 第 K 个最小元素 截留雨水 勾股三元组 巧克力分配问题 股票买卖 左侧较小右侧较大的元素 将数组转换为 Zig-Zag 方式 最后索引为 1 螺旋遍历矩阵 从数组形成的最大数 ...
平衡点 阵列中的领导者 最低平台 按组反转数组 第 K 个最小元素 截留雨水 勾股三元组 巧克力分配问题 股票买卖 左侧较小右侧较大的元素 将数组转换为 Zig-Zag 方式 最后索引为 1 螺旋遍历矩阵 从数组形成的最大数 ...
具有给定和的子数组,计算三胞胎数,Kadane算法,数组缺失数,合并两个排序的数组,交替排列重排数组,对数,数组求逆,对0s,1s和2s的数组进行排序,平衡点,阵列,最小平台,成组的反向阵列,第K个最小元素,陷阱...
平衡点 最大和递增子序列 数组中的领先者 最小平台 大小为 k 的所有子数组的最大值 组中的反向数组 第 K 个最小元素 捕集雨水勾股三重巧克力分布问题股票买卖左侧较小右侧较大的元素将数组转换为Zig-Zag方式查找已...
12.1.4 求反运算 193 12.1.5 左移运算 193 1012.1.6 右移运算 193 12.2 位域(位段) 194 12.3 本章小结 13 文件 13.1 C文件概述 197 13.2 文件指针 198 13.3 文件的打开与关闭 199 13.3.1 文件的打开(fopen 函数) ...
12.1.4 求反运算 193 12.1.5 左移运算 193 1012.1.6 右移运算 193 12.2 位域(位段) 194 12.3 本章小结 13 文件 13.1 C文件概述 197 13.2 文件指针 198 13.3 文件的打开与关闭 199 13.3.1 文件的打开(fopen 函数) ...
阵列中的平衡点 阵列中的领导者 最低平台 按组反转数组 第 K 个最小元素 截留雨水 勾股三元组 巧克力分配问题 股票买卖 左侧较小右侧较大的元素 将数组转换为 Zig-Zag 方式 最后索引为 1 螺旋遍历矩阵 从数组形成的...
leetcode二维数组搜索面试问题 亚马逊 行为的 你最大的成就是什么 你如何评估你现在的老板,他需要改进的地方。...在全年未排序的股票价格数组中,找出买入和卖出的时间点,以实现利润最大化。 您将如何比较具有
点/边双联通 9 最短路 && 查分约束 11 Dijkstra 11 SPFA 13 Floyd_Wallshall 14 次短路 15 查分约束 16 2- SAT 17 生成树 18 最小生成树 18 最小树形图 20 拓扑排序 22 最大团 23 LCA 24 倍增 24 基于RMQ(ST表) 26...
JEECG(J2EE Code Generation)是一款基于代码生成器的智能开发平台。引领新的开发模式 (Online Coding-> 代码生成器 -> 手工 ...6.封装带来了很多便利,但是问题就是扩展难,需要找到一个平衡点。 7.增加nosql支持。
从功能定义上,strlen函数,用来求字符串的长度,sizeof函数是用来求指定变量或变量类型等所占用内存的 大小; 2.sizeof是运算符,而strlen是C库函数strlen只能用char*做参数,且以'\0'结尾的; 对于静态数组处理: ...
2. LOG算子:是高斯和拉普拉斯的双结合,即集平衡(高斯算子,高斯滤波)和边沿(拉普拉斯算子是二阶导求边缘)。这类似于各向异性滤波器(这是高斯一阶导函数),而LOG可以看做是二阶导函数。这两模型来源最初都是...
18.2.5 相距最近的点对 18.3 解递归方程 18.4 复杂度的下限 18.4.1 最小最大问题的下限 18.4.2 排序算法的下限 第19章 动态规划 19.1 算法思想 19.2 应用 19.2.1 0/1背包问题 19.2.2 矩阵乘法链 19.2.3 所有顶点对...
1)实现教科书中图7.33的程序,并能求出任意两点的最短路径。 实验8:动态存储管理 1) 边界标识法,程序实现教科书中算法8.1 2) 伙伴系统,程序实现教科书中算法8.2 实验9:查找 1) 哈希表的查找及其分析:以...