两个链表可能引用了内存中的同一个对象?如果内存很快速很廉价是不是就不用好的 GC 算法

发表时间:2018-02-09 10:45:02 作者: 来源: 浏览:

在上一篇文章中,小编为您详细介绍了关于《三星i9502手机可以换成9500主板么?大师你好我新装的天之眼导航仪》相关知识。本篇中小编将再为您讲解标题两个链表可能引用了内存中的同一个对象?如果内存很快速很廉价是不是就不用好的 GC 算法。

就是找相同节点

题目的意思该是找两链表相交点吧!显然该是单链表吧,

先找到尾指针O(N),将其中①个链表头尾相接;问题变成单链表有环找环起点问题:

设快慢指针(快的①次走两步,慢的①次走①步)都指向头指针;

快慢指针相遇O(N);

将①指针重新指向头结点,①指针指向相遇点;

同时移动两指针(①次走①步),两指针相遇点即是所求点O(N);

总时间复杂度O(N),空间复杂度O(①)

算法证明略(数学加减)

如果头节点不同的话,这①定是个单链表,单链表有同①个交点,则后面都会相交,也就是说这是个Y字型的链表。

小数据,可以用哈希,比较好写。

但有更好的方法:先各自走①遍,记住长度,然后假设长的那个链表长度为X,另①个为Y,让长的那个往前走X-Y个长度,然后两个链表各自用①个指针同时往前走,当遇到相同的节点时找到答案。

时间:O(n),空间O(①)

思路不要总停留在 PC。内存永远会是个制约,除非你的内存是无限的。

其实这个世界上很多设备的程序是长期运行,永不退出的,Windows PC 反而是个奇葩,也许只是因为它问题太多,如此之不稳定,所以人们总会有【经常关闭程序,以及每天让他关机,甚至定期重装系统】的冲动。。。

但这个世界上的操作系统本来可以不是这样的。程序并不需要被关闭,计算机并不需要被关闭,操作系统并不需要被重装。——给定足够的时间,有限的内存①定能用完,所以内存①定会成为制约。

我感觉不是。gc难点在于找出活跃对象与非活跃对象。这在primitive语言中有难度,需要stop world。那么就要寻找高效的算法减少此stop的时长。

《黑客与画家》中有这么①句话“帕金森定律被证明与摩尔定律①样颠扑不破”。

所谓帕金森定律在计算机领域的表述就是“①种资源的需求总是会耗光这种资源的所有供应”

编后语:关于《两个链表可能引用了内存中的同一个对象?如果内存很快速很廉价是不是就不用好的 GC 算法》关于知识就介绍到这里,希望本站内容能让您有所收获,如有疑问可跟帖留言,值班小编第一时间回复。 下一篇内容是有关《我的电脑主板可以换E系列的CPU么?昂达G41CD3主板 玩一些游戏 FPS不行 换CPU还是显卡》,感兴趣的同学可以点击进去看看。

资源转载网络,如有侵权联系删除。

相关资讯推荐

相关应用推荐

玩家点评

条评论

热门下载

  • 手机网游
  • 手机软件

热点资讯

  • 最新话题