学堂 学堂 学堂公众号手机端

LeetCode-Middle of the Linked List

lewis 1年前 (2024-04-14) 阅读数 18 #技术


Description:
Given a non-empty, singly linked list with head node head, return a middle node of linked list.

If there are two middle nodes, return the second middle node.


Example 1:
Input: [1,2,3,4,5]
Output: Node 3 from this list (Serialization: [3,4,5])
The returned node has value 3. (The judge’s serialization of this node is [3,4,5]).
Note that we returned a ListNode object ans, such that:
ans.val = 3, ans.next.val = 4, ans.next.next.val = 5, and ans.next.next.next = NULL.

Example 2:
Input: [1,2,3,4,5,6]
Output: Node 4 from this list (Serialization: [4,5,6])
Since the list has two middle nodes with values 3 and 4, we return the second one.

Note:
The number of nodes in the given list will be between 1 and 100.

题意:给定一个链表,要求找出链表的中间节点,如果链表节点数为偶数,则返回中间两个节点的后一个节点;

解法:要找到链表的中间节点,我们就需要知道链表的长度,因此,我们先遍历一遍链表,得出链表的长度后,再遍历一半的链表节点找到链表的中间节点;

/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode middleNode(ListNode head) {
ListNode last = head;
int len = 0;
while(last != null){
len++;
last = last.next;
}
for(int i=0; i < len/2; i++){
head = head.next;
}
return


版权声明

本文仅代表作者观点,不代表博信信息网立场。

热门