链表oj(3)----链表的中间结点

题目内容:

watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBAb2hhbmHvvIE_size_20_color_FFFFFF_t_70_g_se_x_16

方法一:快慢指针法(让prev标记慢的那一个)

  1. ListNode cur = head;
  2. ListNode prev = head;
  3. while(cur != null && cur.next != null){
  4. prev = prev.next;
  5. cur = cur.next.next;
  6. }
  7. return prev;

方法二:先计算出链表的长度,在遍历链表

  1. ListNode cur = head;
  2. int count = 0;
  3. while(cur != null){
  4. count++;
  5. cur = cur.next;
  6. }
  7. count >>= 1;
  8. cur = head;
  9. while(count != 0){
  10. cur = cur.next;
  11. count--;
  12. }
  13. return cur;

更推荐方法一,只需要遍历一次链表,逻辑性也更强

发表评论

表情:
评论列表 (有 0 条评论,23人围观)

还没有评论,来说两句吧...

相关阅读

    相关 中间

    点击上方 三分钟学前端,关注公众号 回复交流,加入前端编程面试算法每日一题群 面试官也在看的前端面试资料 给定一个带有头结点 `head` 的非空单链表,返回链表的