【真题2020-4】L为int,编写函数找到中位点并删除,返回是否有,并计算时间复杂度。

该博客探讨了如何利用快慢指针在链表中找到中位点并进行删除操作。通过slow和fast指针,其中slow每次移动一步,fast每次移动两步,当fast到达链表尾部时,slow即位于链表的中位点。内容提及快慢指针在解决此类问题中的重要作用,并引用了相关博客资源作为参考。
摘要由CSDN通过智能技术生成

这一题回忆版都不全,示例给的是一个合理的题干。(以后大概率不会考了,主要理解快慢指针的作用)

快慢指针一般思路:

1、我们使用slow和fast分别指向head slow和fast同时移动;

2、slow每次移动一个位置 ,fast每次移动两个位置;

3、当fast移动到null时,slow处于链表中点。

ListNode middleNode(ListNode head) {
 // 快慢指针初始化指向 head
 ListNode slow = head, fast = head;
 // 快指针⾛到末尾时停⽌
 while (fast != null && fast.next != null) {
 // 慢指针⾛⼀步,快指针⾛两步
 slow = slow.next;
 fast = fast.next.next;
 }
 // 慢指针指向中点
 return slow;
}

本题参考示例: 

//原题有改动
//算法思想:用快慢指针的方法找中位点,fast移动2次,slow移动1次。
typedef struct LNode{
    int data;
    struct LNode *next;
}LNode,*LinkList;
bool function(LinkList L){
    if(!L || !L->next)
        return FALSE;
    LinkList slow=L,fast=L->next->next,p=NULL;
    while(fast->next->next){
        slow=slow->next;
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

极限的哥哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值