• 轻歌赋
    2019-02-13
    hashmap的默认大小的问题吗?
    个人感觉是这个原因,解决办法就是创建map时指定大小。
    另外hash的计算都是o1的时间复杂度,但是put这种写操作要比读操作慢。这个暂时没有想到替代方案。
    每次都要创建差值感觉比较慢,可以反过来查询当前值,存放差值。
    传入的数组不知道有没有序,但是可以默认有序,然后前后交换着访问。即先访问第一个,再访问最后一个,再访问第二个,反复进行
    两数之和不知道有没有负数参与的情况。
    个人感觉这个算法的时间复杂度已经是o1了,只能从其他角度考虑更快,空间复杂度偏大,考虑有序情况可以前后交换查找。但是无序情况没有帮助。
    当数据很大的情况下,可以考虑并行算法。
    这个问题的解法感觉最终的结果不应该是单个,可能有多组两数之和都满足的情况,程序设计个人感觉有点问题,实在是想不到更多了。欢迎大家和老师评论,目前还是实习阶段,经验难免不足,希望各位能够指出不足,共勉
    展开

    作者回复: 很厉害!最大的性能问题虽然还没有找到,但哪真的是时间积累的问题。你找的一些问题已经很有见地了,比如负数、有序、并行。比如按照我们的思考习惯,很难想到负数的问题,这里面有一个安全漏洞,我们第三篇接着聊。

    
     5
  • 苏志辉
    2019-03-15
    感觉剖异常比较耗性能,需要生成堆栈,可以返回空值

    作者回复: 是的,没有匹配的可以看作一个正常状况。返回空值(空数组),更好些。

    
     1
  • aguan(^・ェ・^)
    2019-02-14
    时间复杂度O(n),n表示数组的长度
    空间复杂度O(1)

    作者回复: 时间复杂度有三个,一个是for语句,一个是hashMap查询,一个是hashMap的put()。空间复杂度是hashMap占用的空间。你再分开来想想?

    
     1
  • Sisyphus235
    2019-05-22
    这个解法的算法已经比较完善了,如果要提升效率可能要从多线程、多进程的角度出发,这些也要和数据量相关,数据量小的时候可能排序的效果更好,因为线程和进程切换要损失效率
    
    
  • 王子瑞Aliloke有事电...
    2019-03-05
    很想有时间的时候自己试着开发一个浏览器;|
    但这个目标的是我考上研究生之后实施。

    作者回复: 嗯,期待!

    
    
  • 李星
    2019-02-17
    for循环时间复杂度可能是O(n),hashmap的put和containskey都是O(1)吧

    作者回复: 是的

    
    
我们在线,来聊聊吧