当前位置:   article > 正文

Leetcode初学——链表的中间结点(每日一题篇)_leetcode中求链表的中间结点第几题

leetcode中求链表的中间结点第几题

题目:

 

分析:

这道题有两种解法

第一种解法就是最普通的暴力解法,先遍历一遍,再取长度的中间数进行遍历,然后得到想要的节点

时间复杂度是O(3/2 N)

第二种解法就是用快慢指针的方法进行求解

这个方法使用了两个指针,A指针每次循环都往前走一步,B指针要A指针走两步,他才会走一步

这样,当A指针走到尾结点时,B指针就在中间结点

注意:在这道题中,如果结点数是偶数的话,要中间值+1,所以要多一个判断

代码:

  1. class Solution {
  2. public ListNode middleNode(ListNode head) {
  3. ListNode now=head;
  4. ListNode half=now;
  5. int count=0;
  6. while(now.next!=null){
  7. now=now.next;
  8. count++;
  9. if(count%2==0){
  10. half=half.next;
  11. }
  12. }
  13. //这里是对结点数位偶数时进行判断
  14. if(count %2 !=0)
  15. half=half.next;
  16. return half;
  17. }
  18. }

 

结果:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/396665
推荐阅读
相关标签
  

闽ICP备14008679号