題目

從一個Linked List中,找到中間的節點,並且尋訪從中間到最後的節點

解題方法

因為要找到中間的節點,必須先知道Linked List總共的長度,這邊我就先計算Linked List整個長度
再直接從那個點開始回傳往後的點

程式碼

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
class Solution {
public:
ListNode* middleNode(ListNode* head) {
ListNode *tmp = head;
int count = 0;
while(tmp != nullptr)
{
++count;
tmp = tmp->next;
}

ListNode *ans = new ListNode();
ListNode *ptrNode = ans;
tmp = head;

for(int i=0;i<count;++i)
{
if(i >= (count/2))
{
ans->next = new ListNode(tmp->val);
ans = ans->next;
}
tmp = tmp->next;
}
return ptrNode->next;
}
};