posts - 73,  comments - 55,  trackbacks - 0
/*
 * 整形数组平衡点问题:平衡点指左边的整数和等于右边的整数和,
 * 求出平衡点位置,要求输入的数组可能是GB级
 * 
 * 本题要求找出整型数组的一个平衡点(如果要找出所有平衡点的话,按此方法需要把每一个平衡点都存起来)
 
*/


public   class  Test  {

    
public   int  findBalanceableNod( int [] a) {
        
if (a  ==   null ) {
            
return   - 1 ;
        }

        
long  sum  =   0l ;
        
long  subSum  =   0l ;
        
for ( int  i  =   0 ; i  <  a.length; i ++ ) {
            sum 
+=  a[i];
        }

        
for ( int  i  =   0 ; i  <  a.length; i ++ ) {
            
if (subSum  ==  sum  -  subSum  -  a[i]) {
                
return  i;
            }
else {
                subSum 
+=  a[i];
            }

        }

        
return   - 1 ;
    }

    
    
public   static   void  main(String[] args)  {
        
// 测试用例:平衡点为0位,为n-1位,为中间位,a的每个为存了Integer.MAX_VALUE(所以用sum,subSum用long型)
         int [] a  =   { - 1 } ;
        Test t 
=   new  Test();
        System.out.println(t.findBalanceableNod(a));
    }

}
posted on 2007-03-05 10:40 保尔任 阅读(1148) 评论(0)  编辑  收藏 所属分类: Arithmetic & Data Structure

只有注册用户登录后才能发表评论。


网站导航:
博客园   IT新闻   Chat2DB   C++博客   博问  
 

<2007年3月>
25262728123
45678910
11121314151617
18192021222324
25262728293031
1234567

常用链接

留言簿(4)

随笔分类

随笔档案

文章分类

文章档案

搜索

  •  

最新评论

阅读排行榜

评论排行榜