qq_21709435
Aozora丶
采纳率66.7%
2019-06-26 14:07

两个数组,遍历其中一个数组,用这个数组中的数减去另一个数组中与这个数相减绝对值最小的数,将记录保留

40
已采纳

例如:
数组A=[10,20,30,40]
数组B=[12,25,30,55]
此时循环B数组中的数 用B[0]=12 减去A数组中与12相减绝对值最小的数 10(A数组中与12相减绝对值最小的数为10)
此时将相减的结果和两数进行记录C[0]=['A'=>10,'B'=>12,'rest'=>2]
这时A=[20,30,40] B=[2,25,30,55]
之后继续从B的2开始一直循环到A或者B中没有数据为止 返回数组C

卡在了循环求C数组了 期望有大神能够指导一下
用的是php语言

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

3条回答

  • qq_21709435 Aozora丶 2年前

    关了关了。。。。。。。。。。。。。。。。。。。。。。。。。

    点赞 评论 复制链接分享
  • m0_37894611 XiaoGuaiSs 2年前
        int x;
        int y;
        bool isfirst = true; //第一次进入循环
        for(int i = 0; i < A.Count; i++) {
            for(int j; j < B.Count; j++) {
                x = A[i] - B[j];
                if(x == 0) {
                    y = 0; //0肯定最小了,都不用继续算了
                    return y;
                }
                x=x < 0 ? -x : x;
                if(isfirst) {
                    y = x;
                    isfirst = false;
                } else {
    
                    y = x < y ?x : y;
                }
            }
        }
        return y;//最小绝对值
    
    点赞 评论 复制链接分享
  • caozhy 从今以后生命中的每一秒都属于我爱的人 2年前

    这个要先排序下然后计算绝对值会比较快,具体的代码就不写了。

    如果需要具体的代码,有两个办法,方法1,先采纳本回答。方法2,去
    https://ask.csdn.net/questions/759366
    https://ask.csdn.net/questions/759361
    谴责下这种给出详细回答之后采纳自己回答回收积分的流氓行为。
    正是因为流氓的存在,所以没办法让人认真回答了。

    点赞 评论 复制链接分享

相关推荐