`
zhouyrt
  • 浏览: 1162068 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

数组的平衡点

 
阅读更多

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);
}
} 
 
1
2
分享到:
评论

相关推荐

    balance-points:查找数组的平衡点

    查找数组的平衡点。 平衡点是索引的左侧等于索引的右侧的位置。 此函数返回平衡点索引数组。 安装 npm install balance-points bower install balance-points 用法 const balancepoints = require ( 'balance-...

    浅析jquery数组删除指定元素的方法:grep()

    因此,在选择使用`grep()`或`splice()`时,需要根据实际情况考虑性能与需求的平衡。 最后,为了更深入理解如何使用`grep()`方法,我们也可以参考权威的开发文档,例如W3Schools中的`grep()`函数的描述和示例。这类...

    将升序数组转化为平衡二叉搜索树

    本知识点主要探讨如何将一个升序数组转化为一棵平衡二叉搜索树。 #### 平衡二叉搜索树定义 平衡二叉搜索树是一种特殊的二叉搜索树,其中对于任何节点而言,其左子树和右子树的高度差不会超过1。这种结构确保了树的...

    用Java动态数组扩充实现线性表

    线性表的动态扩充实现主要涉及到以下几个关键点: 1. **初始化**:线性表的初始化通常设定一个初始容量,比如10。这样可以避免一开始就分配大量内存,同时也能快速响应初始的插入操作。 2. **扩容机制**:当线性表...

    有两个数组a,b,大小都为n,数组元素的值任意,无序

    考虑到我们的目标是让两个数组的总和之差尽可能小,最直观的想法就是尝试平衡两个数组的元素分布。如果 `sum(a) &gt; sum(b)`,那么应该选择较大的 `a[i]` 与较小的 `b[j]` 进行交换,反之亦然。 #### 2. 算法步骤 - *...

    树状数组整理材料

    - **单点更新**:更新数组A[i],通过一次O(logn)的迭代,更新C[i]及其所有祖先节点。 - **区间查询**:询问区间[A, B]的聚合信息,同样通过O(logn)的迭代,从C[B]递减地减去C[A-1],得到区间[A, B]的信息。 5. **...

    求解找到数组A[1..n]中元素的最大值和次最大值(本小题以数组元素的比较为标准操作)的算法,并分析其最坏情况的时间复杂度。

    - **动态数据集**:当数组是动态变化的,可以考虑使用数据结构如堆、平衡树等来维护最大值和次最大值。 - **大规模数据**:处理大数据集时,可以采用分治策略或者流式处理方法。 通过以上分析,我们不仅理解了如何...

    简记平衡点问题的实现及改进

    在IT行业中,平衡点问题是一个常见的数据结构与算法问题,主要涉及到数组或链表的处理。平衡点可以理解为一个位置,使得该位置左侧的所有元素之和等于右侧所有元素之和。这个问题在很多实际场景中都有应用,比如游戏...

    树状数组基本操作.rar

    树状数组的优点在于其空间效率高,只需要和原始数组同样大小的空间,且操作速度快,对于动态维护区间信息的问题,它的性能通常优于传统的数组遍历或平衡二叉搜索树等方法。 在实际编程中,理解树状数组的工作原理并...

    树tree、动态数组dyArray、hashMap、拼图算法.zip

    接下来,我们将详细探讨这些知识点。 1. **树(Tree)**: 树是一种非线性的数据结构,它由若干个节点组成,每个节点包含一个值,并可能链接到零个或多个子节点。树的概念广泛应用于计算机科学中,如文件系统、...

    树状数组案例示例.zip

    2. **空间效率**:相比其他数据结构如平衡树,树状数组只需要O(N)的空间,更节省内存。 3. **简单易用**:相比于红黑树、AVL树等高级数据结构,树状数组的实现相对简单,容易理解和操作。 ### 五、树状数组的应用...

    树状数组的简单教程与分享

    相较于其他数据结构如线段树、平衡树等,树状数组具有实现简单、效率高的特点,在处理动态数组问题时尤为适用。 #### 二、核心特性 1. **单点更新**:树状数组支持快速地增加或减少数组中特定位置的值。这使得树状...

    有用的C语言源代码-二叉树-链表-数组等

    下面将详细讨论其中涉及的主要知识点。 首先,我们来看"链表"部分。链表是一种线性数据结构,不同于数组,它不连续存储元素。链表由节点构成,每个节点包含数据和指向下一个节点的指针。这里可能包括单链表、双向...

    线段树与树状数组专题讲解

    1. **定义**:线段树是一种平衡二叉树,每个节点代表一个区间,叶子节点对应输入数组中的元素,非叶子节点的区间由其子节点的区间合并而成。 2. **操作**:线段树支持两种主要操作:区间查询和区间更新。区间查询...

    算法-数据结构- 树状数组.rar

    2. **空间效率**:与平衡二分查找树等其他数据结构相比,树状数组的空间复杂度更低,只需要一个数组即可。 3. **易于实现**:相比于其他高级数据结构,树状数组的代码实现相对简单,易于理解和调试。 **五、树状...

    第1章 树状数组 测试数据.rar

    在实际编程时,树状数组常常与其他数据结构如堆、平衡二叉搜索树等结合使用,以解决更复杂的查询和更新问题。例如,在求解动态区间最值问题时,可以结合最小堆来加速查询过程。因此,树状数组是信息学竞赛和算法设计...

    oracle数组存储过程批量插入.docx

    2. 调整数据库的批量插入大小,找到性能与内存消耗的最佳平衡点。 3. 分析和调整SQL执行计划,确保使用了合适的索引和表分区策略。 4. 在必要时,使用Oracle的Bulk Bind功能,它可以一次性绑定多个值,进一步提高...

    c语言基础-c语言编程基础之二维数组操作-两地调度.zip

    二维数组的初始化也是重要的知识点。你可以直接在声明时初始化,如`int array[3][4] = {{1,2,3,4}, {5,6,7,8}, {9,10,11,12}};`,这将创建一个3x4的矩阵,每个元素都有初始值。在“两地调度”问题中,这些数值可能...

    Excel与财务管理第章投资项目不确定性风险分析完美版资料.ppt

    例如,可以使用数组公式计算销售收入、边际贡献、边际贡献率等,并通过调整单元格的数据来观察它们如何影响盈亏平衡点。 总结起来,Excel在投资项目不确定性风险分析中起到关键作用,它提供了计算和模拟各种财务...

    js代码-尽量平分数组

    在这个优化版本中,我们遍历数组,计算每个位置作为分割点时两个子数组的长度差,并保存差值最小的情况。最后,根据最佳分割点返回两个子数组。 在`main.js`文件中,可能会包含这样的实现以及测试用例,确保函数在...

Global site tag (gtag.js) - Google Analytics