返回链表的中间结点,若中间有两个结点,则返回后一个结点(两种方法)
生活随笔
收集整理的這篇文章主要介紹了
返回链表的中间结点,若中间有两个结点,则返回后一个结点(两种方法)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1.先遍歷整個(gè)鏈表,求出鏈表長(zhǎng)度,在進(jìn)行循環(huán)找出中間結(jié)點(diǎn)
public class Solution {public ListNode middleNode(ListNode head) {int len=0;for(ListNode cur=head;cur!=null;cur=cur.next)len++;//遍歷算出鏈表長(zhǎng)度ListNode node=head;for(int i=0;i<len/2;i++)node=node.next;return node;} }2.利用快慢指針,定義兩個(gè)引用,fast指針一次走兩步,slow指針一次走一步,直至fast.next=null停止,即為中間結(jié)點(diǎn)
public class Solution {public ListNode middleNode(ListNode head) {ListNode fast=head;ListNode slow=head;while(fast!=null){fast=fast.next;if(fast==null){break;}//因?yàn)閒ast每次走兩步,有可能走一步時(shí)就到了最后(奇數(shù)節(jié)點(diǎn)時(shí))slow=slow.next;fast=fast.next;}return slow;} }?
總結(jié)
以上是生活随笔為你收集整理的返回链表的中间结点,若中间有两个结点,则返回后一个结点(两种方法)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 笔记本电脑WIFI图标突然不显示的解决办
- 下一篇: 基于RK3399的LED驱动开发