3月打卡活动第23天 LeetCode第876题:链表的中间节点(简单)

3月打卡活动第23天 LeetCode第876题:链表的中间节点(简单)

  • 题目:给定一个带有头结点 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。
    在这里插入图片描述
  • 解题思路:应该叫计数法吧。。
class Solution {
    public ListNode middleNode(ListNode head) {
        int i = 0;
        ListNode pre = head;
        while(pre.next != null){
            pre = pre.next;
            i++;
        }
        if(i==0) return head;
        i = i%2==0?i/2:i/2+1;
        pre = head;
        while(i > 0){
            pre = pre.next;
            i--;
        }
        return pre;
    }
}

在这里插入图片描述

  • 题解做法1:快慢指针的做法,快指针一次挪动两步,慢指针一次挪动一步,只需遍历一次。
class Solution {
    public ListNode middleNode(ListNode head) {
        ListNode slow = head, fast = head;
        while (fast != null && fast.next != null) {
            slow = slow.next;
            fast = fast.next.next;
        }
        return slow;
    }
}

作者:LeetCode-Solution
链接:https://leetcode-cn.com/problems/middle-of-the-linked-list/solution/lian-biao-de-zhong-jian-jie-dian-by-leetcode-solut/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

在这里插入图片描述

  • 题解做法2:转换成数组,通过下标获得。
class Solution {
    public ListNode middleNode(ListNode head) {
        ListNode[] A = new ListNode[100];
        int t = 0;
        while (head != null) {
            A[t++] = head;
            head = head.next;
        }
        return A[t / 2];
    }
}

作者:LeetCode-Solution
链接:https://leetcode-cn.com/problems/middle-of-the-linked-list/solution/lian-biao-de-zhong-jian-jie-dian-by-leetcode-solut/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

在这里插入图片描述

发布了111 篇原创文章 · 获赞 17 · 访问量 2915

猜你喜欢

转载自blog.csdn.net/new_whiter/article/details/105040852
今日推荐