当前位置: 首页 > wzjs >正文

福州电子网站建设中国第一营销网

福州电子网站建设,中国第一营销网,wordpress 家具,专业制作标书一、 给你单链表的头结点 head ,请你找出并返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。 要求:只遍历一遍链表 可以使用快慢指针:fast 一次走两步,slow 一次走一步。当 fast NULL(偶数个结点)或…

一、

给你单链表的头结点 head ,请你找出并返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。
要求:只遍历一遍链表

可以使用快慢指针:fast 一次走两步,slow 一次走一步。当 fast == NULL(偶数个结点)或者 fast->next == NULL(奇数个结点)就停止,返回 slow。

struct ListNode* middleNode(struct ListNode* head) 
{struct ListNode* slow, *fast; slow = fast = head; while(fast && fast->next){slow = slow->next; fast = fast->next->next;}return slow;
}

注意:

1、一次性定义多个指针时,第二个及以后的指针名前面都要加 * 。

2、while( )括号内是循环继续的条件。

二、

输入一个链表,输出该链表中倒数第k个结点。
要求:只遍历一遍链表

快慢指针:fast 先走 k - 1 步,然后 fast 和 sliow 同时走,直到 fast 走到链表的最后一个结点。

struct ListNode* FindKthToTail(struct ListNode* pListHead, int k ) 
{struct ListNode* slow, *fast; slow = fast = pListHead;while(--k){fast = fast->next;}while(fast->next){slow = slow->next; fast = fast->next;}
}

三、

给你一个链表的头节点 head ,判断链表中是否有环。

使用快慢指针:fast 一次走两步,slow 一次走一步。

bool hasCycle(struct ListNode *head) 
{   if(head == NULL)return false;if(head->next == NULL)return false;struct ListNode * slow = head;struct ListNode * fast = head;while(1){fast = fast->next;if(fast == slow)return true;if(fast == NULL)return false;fast = fast->next;if(fast == slow)return true;if(fast == NULL)return false;slow = slow->next;if(fast == slow)return true;if(slow == NULL)return false;}return false;
}

注意:快指针不能一次就走两步(fast == fast->next->next),若链表无环,fast 可能会变成 NULL。fast 应该在执行一次循环体中分别走两步,每走一步就判断是否相遇或为 NULL。

四、

给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。

要求:时间复杂度O(n),空间复杂度O(1)。

思路:1、分别求两个链表的长度 2、长的链表先走 差距步 3、同时走,第一个地址的结点相同就是交点

struct ListNode *getIntersectionNode(struct ListNode *headA, struct ListNode *headB) 
{struct ListNode* tailA = headA, *tailB = headB; int lenA = 1, lenB = 1; while(tailA->next){tailA = tailA->next; ++lenA;}while(tailB->next){tailB = tailB->next; ++lenB;}if(tailA != tailB)return NULL;int gap = abs(lenA-lenB); struct ListNode* longList = headA, *shortList = headB; if(lenA ‹ lenB){longList = headB; shortList = headA;}while(gap--){longList = longList->next;}while(longList != shortList){longList = longList->next; shortList = shortList->next;}return longList;}

http://www.dtcms.com/wzjs/548996.html

相关文章:

  • 东莞网站建设培训学校公司网络组建方案设计
  • 如何做好网站设计工贸企业logo设计
  • 刷网站流量有用吗3gqq网页版
  • 一般pr做视频过程那个网站有云数据库安装wordpress
  • 网站建设网站开发网站空间关闭了怎么办
  • 专业的企业网站制作网站网络建设
  • 福建住房城乡建设厅网站wordpress导航目录
  • 怎样申请建网站wordpress怎么编辑保存
  • 泉州建站模板搭建网站栏目划分
  • 重庆商城网站制作报价中国最好的猎头公司
  • 网站首页的优化网页视频下载浏览器
  • .net 网站管理系统网站如何设置二级域名
  • 机械设备 东莞网站建设河南省网站建设
  • 免费在线网站模板wordpress 主题 星球
  • 企业对比网站wordpress拓展业务
  • 织梦网站如何做301跳转类豆瓣的模板 wordpress
  • 网站建设陆金手指下拉壹玖黄冈商城网站制作哪家好
  • 科技信息网站系统建设方案wordpress指定分类文章列表
  • 国外优秀的平面设计网站网站的效果图
  • php网站开发程序填空题公司做环评的网站
  • 电商网站上信息资源的特点包括哪些wordpress主题示例页面
  • 织梦网站统计代码新手学建设网站书籍
  • 黄山公司做网站做设计在哪个网站上找高清图
  • 建设网站几钱网站建设 人天价格
  • 苏州微网站建设公司哪家好免费的seo优化
  • 昆山建设银行交学费的网站培训学校管理制度大全
  • 帝国企业网站模板wordpress island
  • php怎么写购物网站商品显示页面门窗企业网站建设
  • 域名还在备案可以做网站吗wordpress去掉文章rss
  • 网站建设设备清单个体可以做几个网站