ajax_cn_cn 2008-07-04 22:59
浏览 263
已采纳

两个有序的List merge的问题

两个有序的List a,b 里面存放的是Integer类型的数字,请完成下列方法

public List merge(List a, List b){

}

要求产出一个有序的List(请注意,需要merge的List已经是有序的)

  • 写回答

1条回答 默认 最新

  • congjl2002 2008-07-05 04:03
    关注

    首先说一下思路:
    1.因为你这个是有序的,我假定他是升序排列
    2.首先建立一个新的List c,然后本别比较a和b中的值,将较小的值追加到c的末尾
    3.如果a,b当前值相等,则将a,b当前的值都追加到c的末尾
    4.如果a和b有一个查找到了最后,则将另一个没有到结尾的list后面的所有项都追缴到c的后面

    这样可以保证速度最快,请参考:
    [code="java"] public List merage(List a, List b) {
    List c = new ArrayList();
    int aIndex = 0;
    int bIndex = 0;
    while (a.size() > aIndex && b.size() > bIndex) {
    if (a.get(aIndex) < b.get(bIndex)) {
    c.add(a.get(aIndex));
    aIndex++;
    } else if (a.get(aIndex) > b.get(bIndex)) {
    c.add(b.get(bIndex));
    bIndex++;
    } else {//如果相等
    c.add(a.get(aIndex));
    c.add(b.get(bIndex));
    aIndex++;
    bIndex++;
    }
    }
    if (a.size() < aIndex) {
    for (int i = bIndex; i < b.size(); i++) {
    c.add(b.get(i));
    }
    } else {
    for (int i = aIndex; i < a.size(); i++) {
    c.add(a.get(i));
    }
    }
    System.out.println(c);
    return c;
    }[/code]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 微信会员卡接入微信支付商户号收款
  • ¥15 如何获取烟草零售终端数据
  • ¥15 数学建模招标中位数问题
  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?