lee80705041 2010-02-24 03:34
浏览 297
已采纳

java高级算法问题求解 牛人请进

1)N个已经排序好的数组,每个数组有M个数字,给出一个算法把这N个数组合并成一个排好序的大数组,并分析该算法的时间和空间复杂度。

2)写一个Java函数最高效的实现字符串倒序(不能直接使用类库API)。

3)用Java数组实现一个先进先出的Queue。

  • 写回答

1条回答 默认 最新

  • iteye_13500 2010-02-24 10:00
    关注

    1 可以参考我的一篇博文
    http://robblog.iteye.com/admin/blogs/566114
    使用堆排序进行多路数组合并。

    2
    [code="java"] public static char[] reverseStr(final char[] oriStr) {
    char[] ret = new char[oriStr.length];
    for (int i = 0; i < oriStr.length; i++)
    ret[i] = oriStr[oriStr.length - i - 1];
    return ret;
    }

    public static void main(String[] args) {
        char[] oriStr = { 'b', 'c', 'd', 'a', 'f' };
        System.out.println(reverseStr(oriStr));
    }[/code]
    

    3 说下思路
    使用一个数组保存进入队列的值,分别用两个变量保存队头和队尾,需要考虑:

    • 入队: 在队尾插入元素,队尾加1
    • 出队: 返回队头,队头加1
    • 空队列: 队头索引和队尾索引相同
    • 数组扩张和缩小: 由于数组定义时必须指定长度,可以先指定一个长度,当队列中的元素个数将要大于这个长度是,扩张数组,队列长度过小时缩小数组。如果扩张数组: 可以参考ArrayList中的实现。
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作