算法面试题,交换位置求和差最小

题目:
通过交换a,b中的元素,使数组a和数组b的和差最小(数组大小不能变,不能同列直接交换)

//两数组进行元素交换实现最小差值
    public static void getMinusArray(int[] a, int[] b) {
        // 数组a和b的和
        int suma = getSum(a);
        int sumb = getSum(b);

        int startMinus = Math.abs(suma - sumb);
        int minus = 0;
        for(int i = 0; i < a.length; i++){
            for(int j = 0; j < a.length; j++) {
                //先交换
                int temp=a[i];
                a[i]=b[j];
                b[j]=temp;
                //交换后的差值
                minus = Math.abs(getSum(a) - getSum(b));
                if(minus<startMinus){
                    startMinus = minus;
                }else{
                    //若交换后,差值比原来大或相等,则不交换--即重新换回来
                    int temp2=a[i];
                    a[i]=b[j];
                    b[j]=temp2;
                }
            }
        }
        System.out.println(Arrays.toString(a));
        System.out.println(Arrays.toString(b));
    }

    // 求数组和
    public static int getSum(int[] arr) {
        int sum = 0;
        for (int i : arr) {
            sum += i;
        }
        return sum;
    }

public static void main(String[] args){
        int[] a= {1,9,11,0,12,8,9,5};
        int[] b= {1,9,11,9,12,8,9,5,12,14,19,20};
        getMinusArray(a,b);
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 专业考题类型管理运行工作负责人一般作业考题内容选项A选项B选项C选项D选项E选项F正确答案 变电单选GYSZ本规程...
    小白兔去钓鱼阅读 9,090评论 0 13
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 27,911评论 1 45
  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 3,438评论 0 2
  • 忘了有多少三年前立下的三年后却没有实现的目标;那些想去没有去的的地方;有些没有说再见却走散的人;似乎把所有无忧无虑...
    陈小样dany阅读 241评论 0 0
  • 今天头条新闻上面,有好几篇文章都在讨论,前几天网上流传的一个视频。视频内容是高铁上一位父亲亲吻自己的女儿,同时用手...
    青春梦享阅读 127评论 0 0