• 数组的平衡点


    2007年5月去一个中小型外企的上机题,笔试全是英文的。没戏了。

    package myAction;
    public class Balence {
    /**
      * 求数组index左边的和
      * @param a
      * @param index
      * @return
      */
    public static int left(int[] a, int index)
    {
      int left = 0;
      if(index==0)
      {
       left = a[0];
       return left;
      }
      
      for(int i=0;i<index;i++)
      {
       left = left + a[index-1-i];
      }
      return left;
      
    }
    /**
      * 求数组右边的和
      * @param a
      * @param index
      * @return
      */
    public static int right(int[] a, int index)
    {
      
      int right = 0;
      if(index==a.length-1)
      {
       right = a[a.length-1];
       return right;
      }
      for(int i=index+1;i<a.length;i++)
      {
       right = right + a[i];
      }
      return right;
      
    }
    /**
      * 遍历数组,如果左边等于右边,则打印平衡点index
      * @param a
      */
    public static void balences(int a[])
    {
      int b[];
      int left = 0;
      int right = 0;
      int length = 0;
      for(int i=0;i<a.length;i++)
      {
       left = left(a,i);
       right = right(a,i);
       if(left==right)
       {
        length++;
        System.out.println("平衡点" + length + ":" + i);
       }
      
      }
      System.out.println("平衡点共计" + length + "个");
    } 
    

    //方法二
    //1. 先求總數.
    //X =A1+A2+A3+A4+..... +An
    //2. 從A1開始累加,設為N , 和等於(X-N)/2 為平衡點.
    //3. 一直找到數組最後
    //4.除于2后好像结果有点问题??

    public static void balence2(int[] a)
    {
      
      int sum = 0;
      int temp = 0;
      int length = 0;
      //求数组的总和
      for(int i=0;i<a.length;i++)
      {
       sum = sum + a[i];
      }
      for(int i=0;i<a.length;i++)
      {
       temp = temp + a[i];
       if(temp==((sum-temp)/2))
       {
        length++;
        System.out.println("平衡点" + length + ":" + i);
       }
      }
      System.out.println("平衡点共计" + length + "个");
    }
    
    //测试类
    public static void main(String[] args)
    {
      
      int[] a = {1,2,5,6,2,4,2,8};
      int left = left(a,3);
      int right = right(a,3);
    //  System.out.println("left=" + left);
    //  System.out.println("right=" + right);
      balences(a);
    //  balence2(a);
    }
    } 
    

  • 相关阅读:
    Android开源日志框架xlog
    [CrackMe]160个CrackMe之18
    SEH异常
    全局句柄表
    用户层异常的派发与处理
    用户层异常的处理
    内核层异常的收集与处理
    两种异常(CPU异常、用户模拟异常)的收集
    无处不在的页异常
    AppBoxFuture(四). 随需而变-Online Schema Change
  • 原文地址:https://www.cnblogs.com/snandy/p/1964491.html
Copyright © 2020-2023  润新知