leetcode是什么意思,leetcode官网

  leetcode是什么意思,leetcode官网

  在的第一篇博文中

  一.导言:

  如果链表中有一个节点可以通过连续跟踪下一个指针再次到达,那么链表中就有一个环。

  为了表示给定链表中的环,求值系统内部使用整数pos来表示链表末尾连接到链表的位置(索引从0开始)。

  注意:pos不是作为参数传递的。只是为了识别链表的实际情况。

  如果链表中有环,则返回true否则,返回false。

  请看下面的例子:

  示例1:

  输入:head=[3,2,0,-4],pos=1

  输出:真

  说明:链表中有一个环,它的尾部与第二个节点相连。

  示例2:

  输入:head=[1,2],pos=0

  输出:真

  说明:链表中有一个环,它的尾部与第一个节点相连。

  示例3:

  Input: head=[1],pos=-1

  输出:假

  说明:链表中没有环。

  提示:

  链表中节点的个数范围是[0,104] -105=Node.val=105 pos是-1或者是链表中的有效索引。标题:LeetCode官网

  题目难度:

  三、思路分析:其实刚得到这个问题的时候,我的第一反应是遍历所有节点,每遍历一个节点,就判断这个节点之前是否被访问过。具体做法如下:

  定义一个哈希表来存储所有访问过的节点。每次遍历一个节点,如果该节点存在于哈希表中,说明该链表是循环链表;否则,该节点被添加到哈希表中。重复这个过程,直到遍历了整个链表。如果完全遍历,说明链表不是循环的,可以返回false。四。算法实现:AC代码

  具体算法代码实现如下:

  公共类解决方案{

  public boolean has cycle(list node head){

  //定义一个集合

  set ListNode nodeSet=new HashSet ListNode();

  而(头!=null) {

  //如果nodeSet添加相同的节点,将返回false

  如果(!nodeSet.add(head)) {

  返回true

  }

  head=head.next

  }

  返回false

  }

  }

  动词(verb的缩写)总结:哈希表法leetcode提交和运行结果截图如下:

  复杂性分析:

  时间复杂度:O(n)。其中n是链表中节点的数量。在最坏的情况下,我们需要遍历每个节点一次。空间复杂度:O(n)。其中n是链表中节点的数量。对于主哈希表的开销,最坏的情况下,我们需要将每个节点插入哈希表一次。其实找思路比较简单,就是怕有同学陷进去,还有的只是演示通过pos告诉你是不是环,指向哪个节点。我写的也是最常见最能想到的思维方式。

  再者,解决问题的方法有千万种,欢迎朋友们脑洞大开。如果你有更好的想法或创意,请在评论区告诉我。只有互相学习,才能成长得更快。

  好了,本期就到这里。下次再见。

  六、推荐:leetcode-9。回文leetcode-1。两个数的和leetcode-13。罗马数字到整数leetcode-14。最长公共前缀leetcode-20。有效括号leetcode-21。合并两个有序链表。删除排序。数组VII中的重复项。文末:《每日一题LeetCode》我和你一起刷题。每篇专栏文章都附有详细的解决方案,我将带你手拉手解决问题。

  一个人可能觉得坚持刷很累很辛苦,但是一群人会觉得这是一件很有意义的事情,互相督促鼓励,一起变得更强。

  我是bug,一个想走出大山改变命运的程徐苑。前面的路还很长,等着我们去突破,去挑战。来吧,朋友们,让我们一起加油!未来可期,奋斗!

  最后送你两句话与你分享!

  做你想做的人,没有时间限制,你可以随时开始,

  你可以从现在开始改变,也可以保持原样。这件事没有规则,你可以活出最好的自己。

  如果文章对你有帮助,请留下你的赞!(#^.^#);

  如果你喜欢虫菌分享的文章,请关注虫菌!()~;

  如对文章有任何疑问,请在文末留言或加群【QQ交流群:708072830】;

  鉴于本人个人经验有限,如对所有观点和技术研究点有异议,请直接回复参与讨论(请勿发表攻击性言论,谢谢);

  版权声明:原创不易。请附上原文和本声明来源的链接。保留所有权利。盗版必究!谢谢你。

  版权归作者所有:博主bug Fung原创作品,转载授权请联系作者,否则将追究法律责任。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: