876. Middle of the Linked List
Posted learning-c
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了876. Middle of the Linked List相关的知识,希望对你有一定的参考价值。
经典链表题
找链表的中间节点 快慢指针
#include<iostream> #include<vector> #include<algorithm> using namespace std; //Definition for singly-linked list. //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. struct ListNode{ int val; ListNode* next; ListNode(int x):val(x),next(NULL){} //初始化列表 }; class Solution{ public: ListNode* middleNode(ListNode* head){ if(head==NULL) return head; ListNode* slow=head; ListNode* fast=head; while(fast&&fast->next){ fast=fast->next->next; slow=slow->next; } return slow; } }; int main(){ vector<int> vals={1,2,3,4,5}; ListNode* head=NULL; ListNode* cur=NULL; for(int i=0;i<vals.size();++i){ if(cur==NULL){ head=cur=new ListNode(vals[i]); }else{ cur->next=new ListNode(vals[i]); cur=cur->next; } } Solution solution; ListNode* middle=solution.middleNode(head); std::cout<<middle->val<<endl; return 0; }
以上是关于876. Middle of the Linked List的主要内容,如果未能解决你的问题,请参考以下文章
876. Middle of the Linked List
876. Middle of the Linked List
[LeetCode] 876. Middle of the Linked List
leetcode-876 Middle of the Linked List