给定一个带有头结点 head 的非空单链表,返回链表的中间结点。 如果有两个中间结点,则返回第二个中间结点。
程序员文章站
2022-07-10 20:31:05
...
一、题目
给定一个带有头结点 head 的非空单链表,返回链表的中间结点。 如果有两个中间结点,则返回第二个中间结点。
二、思路
1,计算出链表长度size
2,向后走size/2步数,得到中间结点
三、代码
public class Solution {
static class ListNode {
int val;
ListNode next;
public ListNode(int val) {
this.val = val;
}
}
/*
*
* 给定一个带有头结点 head 的非空单链表,返回链表的中间结点。
如果有两个中间结点,则返回第二个中间结点。
*/
public ListNode middleNode(ListNode head) {
// 先排除特殊情况
if (head == null) {
return null;
}
int size = Size(head);
for (int i = 0; i < size / 2; i++) {
head = head.next;
}
return head;
}
private int Size(ListNode pHead) {
if (pHead == null) {
return 0;
}
int size = 0;
while (pHead != null) {
size++;
pHead = pHead.next;
}
return size;
}
}
推荐阅读
-
给定一个带有头结点 head 的非空单链表,返回链表的中间结点。 如果有两个中间结点,则返回第二个中间结点。
-
给定一个带有头结点 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点(Java实现)
-
给定一个带有头结点 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点
-
Leetcode题库:给定一个带有头结点 head 的非空单链表,返回链表的中间结点,如果有两个中间节点则返回第二个
-
常见单链表题型(三) 给定一个带有头结点 head 的非空单链表,返回链表的中间结点;如果有两个中间结点,则返回第二个中间结点
-
给定一个带有头结点 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。
-
给定一个带有头结点 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点
-
Java:给定一个带有头结点 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点
-
给定一个头结点为 head 的非空单链表,返回链表的中间结点,如果有两个中间结点,则返回第二个中间结点。
-
【Java】数据结构——(OJ题)给定一个带有头结点 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点