/*** 用java写个程序,将一个数组分成2个数组,使得2个数组的差值最小* 思路是:1).先求出数组的总和sum, sum/2=mid2).然后将数组的元素跟mid比较,取出跟mid最接近的元素,放在第一个小数组里,然后在原来数组删除刚刚被取出的元素,更新原来数组3).接着再取出离mid最近的元素,放在第二个小数组,在原数组中删除刚刚被取出的元素,更新原来数组4).遍历原来数组,重复2和3,往后的元素放在第一个小数组或者第二个小数组,取决于两个小数组的所有元素的总和,哪个总和小就放在哪个小数组*/public static int[][]  binaryMiun(int[] Arrint){//遍历数组求元素的总和sumint sum = sumArr(Arrint);//mid 为元素总和的一半int mid = sum/2;int suml = 0;//第一个小数组元素总和int sumr = 0;//第二个小数组元素的总和int[] l = new int[Arrint.length] ;//第一个小数组int[] r =  new int[Arrint.length] ;//第二个小数组int lcount = 0;int rcount = 0;int n = Arrint.length;for(int h= 0; h < n;) {int min = mid - Arrint[0];int j = 0;//找出离mid最近的元素for(int i=0;i<n;i++){int temp = mid - Arrint[i];if(temp<=mid){min = temp;//距离mid最近的元素的下标j = i;}}//将取出的元素放在元素总和较小的数组if(suml <= sumr){l[lcount++]  = Arrint[j];suml += Arrint[j];}else{r[rcount++]  = Arrint[j];sumr += Arrint[j];}//将刚刚在原数组取出的元素删除,更新原数组/* for(int k= j ;k<n;k++){Arrint[k] = Arrint[k+1];}*/Arrint = delAnyPosition(Arrint,j);n--;}int[][] lr = {Arrays.copyOf(l,lcount),Arrays.copyOf(r,rcount)};return lr;}/*** 数组求和* @param arr* @return*/public static int sumArr(int[] arr){int sum = 0;for(int i=0;i<arr.length;i++){sum += arr[i];}return sum;}

将一个数组分成2个数组,使得2个数组的差值最小相关推荐

  1. 背包问题变种:将数组分成两部分使得两部分的和的差最小

    题目: 将一个数组分成两部分,不要求两部分所包含的元素个数相等,要求使得这两个部分的和的差值最小.比如对于数组{1,0,1,7,2,4},可以分成{1,0,1,2,4}和{7},使得这两部分的差值最小 ...

  2. 牛客_求将一个数组分割为两个差值最小的部分

    问题描述: 将一个数组分成两部分,不要求两部分所包含的元素个数相等,要求使得这两个部分的和的差值最小. /*** @ Author zhangsf* @CreateTime 2019/9/20 - 8 ...

  3. 将一个数组划分为和差值最小的子数组

    要求:将数组中的数划分为两组,使得两个子数组的和的差值最小,数组中的数的取值范围为0<X<100,元素个数也是大于0小于100.如:a[]={2,4,5,6,7},得出的两组数:{2,4, ...

  4. 在一个数组中找 差值最大的两个数 差值最小的两个数 推广到 点对

    先求差值最大的: 1.找出最大值和最小值 然后做差,  每次比较相邻的两个数(比如先0,1  然后2,3),然后每次比较记录下最大和最小的差值,可以比较1.5N次得到结果,和分为奇数偶数位比较一样的复 ...

  5. 交换两个数组的元素使之总和的差值最小

    题目描述: 有两个数组a,b,大小都为n,数组元素的值任意整型数,无序:           要求:通过交换a,b中的元素,使数组a元素的和与数组b元素的和之间的差最小. #include " ...

  6. 将数组分成两部分,使这两部分和的差最小

    题目描述 作为一名见义忘利的国奖爷,在你想不出题目时,只需要在心里默念国奖爷,他就会迅速地降临到你身边,和你一起想不出这一题.然而,由于论文怪的阻挠,国奖爷手里还有一堆论文要写,他需要先写完这些论文才 ...

  7. 数组分成两组差值最小 python_数组中的数分为两组,让给出一个算法,使得两个组的和的差的绝对值最小,数组中的数的取值范围是0x100,元素个数也是大于0, 小于100 。...

    比如a[]={2,4,5,6,7},得出的两组数{2,4,6}和{5,7},abs(sum(a1)-sum(a2))=0: 比如{2,5,6,10},abs(sum(2,10)-sum(5,6))=1 ...

  8. python交换数组中的两个元素_[Python]华为面试题,交换两个数组的元素使之总和的差值最小。...

    看看写了个 ,实现不需数组长度一致,复杂度O(n^2),求好的算法 /** arr1={1,2,3}; * arr2={22,33,44,55}; * 交换两个矩阵数据 */ public void ...

  9. 编程珠玑第八章——习题10查找数组中总和最接近0的子数组

    内容来自互联网,做了一定修改 方法1: 这个问题和求子数组最大值优点相似,但解法不同,如果按照求子数组最大值的方法来求解,我们可以求出以j为截止的最大值和最小值,如果最大值和最小值都>0,那么最 ...

  10. 【动态规划】将一个包含m个整数的数组分成n个数组,每个数组的和尽量接近,及其变形(Python实现)

    背景 实际的问题来源于LQA系统的人员分配工作量,有两种方式,一种是 平均分配,一种是按给定比例分配.不需要AC,能得到符合题意的解就算达成目标. 平均分配 一个order订单包含一个xls表格,内含 ...

最新文章

  1. CSS之布局(默认样式)
  2. 7个问题,直击管理的本质
  3. 自然语言处理的现实应用
  4. php使用es搜索引擎,分布式搜索引擎Elasticsearch PHP类封装 使用原生api
  5. c++计算eigen随笔(1)
  6. mvc的视图中显示DataTable的方法
  7. WP7 网络请求之WebClient
  8. php父子遍历,jQuery 遍历
  9. 11月第4周国内域名服务商TOP10:7家实现净增长
  10. 模电数电c语言笔试题,模电数电题面试题集锦
  11. 软件编码测试要点总结
  12. moxa串口卡Linux驱动,moxa多串口驱动下载
  13. 发票专用驱动sjz_税务局紧急提醒!10月31日前,不能领票,不能勾选!11月1日后,发票开具将大不同!...
  14. Scene Detection
  15. java从键盘上输入一位整数_当输入1到7时_从键盘上输入一位整数,当输入1~7时,显示对应的英文星期名称的缩写。...
  16. 新手学习 python 的好工具:PyScripter
  17. Python爬虫之Scrapy框架系列(12)——实战ZH小说的爬取来深入学习CrawlSpider
  18. 国内有哪些云服务器比较靠谱?
  19. 顶点缓冲区与着色器 (The Cherno + LeranOpenGL)笔记
  20. AndroidStudio之https://jitpack.io

热门文章

  1. Linux 磁盘管理的命令
  2. 画火柴人动画的手机软件_火柴人动漫制作软件下载-火柴人动漫制作手机中文版 v2.1.4_5577安卓网...
  3. 在 cmd 中启动 Android 模拟器
  4. excel表格打印每页都有表头_Excel小技巧3:打印每页添加表头
  5. linux firefox插件目录,Linux中Firefox常用插件说明
  6. linux命令du -sh,du命令_Linux du 命令用法详解:显示每个文件和目录的磁盘使用空间...
  7. 节理玫瑰花图怎么画,节理玫瑰花图和地质图.ppt
  8. iMazing怎么恢复备份?iMazing恢复备份教程分享
  9. 1078: 字符串加密
  10. 关于Render在不同情况的用法