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

福建住房和城乡建设厅网站个人免费自助建站

福建住房和城乡建设厅网站,个人免费自助建站,无锡网站设计哪家公司好,大气科技类企业公司网站源码876 链表的中间节点 题目描述 思路 :快慢指针 快指针 fast 每轮走两步,慢指针每轮走一步,因此当快指针遍历完链表时,慢指针就指向链表中间节点。 链表长度为奇数: 当 fast 走到链表「尾节点」时,slow 正好走到「中间…

876 链表的中间节点

题目描述

思路 :快慢指针

快指针 fast 每轮走两步,慢指针每轮走一步,因此当快指针遍历完链表时,慢指针就指向链表中间节点。

链表长度为奇数: 当 fast 走到链表「尾节点」时,slow 正好走到「中间节点」。

链表长度为偶数: 当 fast 走到「null」时(越过「尾节点」后),slow 正好走到「第二个中间节点」。

总结以上规律,应在当 fast 遇到或越过尾节点 时跳出循环,并返回 slow 即可。

/*** Definition for singly-linked list.* public class ListNode {*     int val;*     ListNode next;*     ListNode() {}*     ListNode(int val) { this.val = val; }*     ListNode(int val, ListNode next) { this.val = val; this.next = next; }* }*/
class Solution {public ListNode middleNode(ListNode head) {ListNode slow=head;ListNode fast=head;while(fast!=null && fast.next!=null){slow=slow.next;fast=fast.next.next;}return slow;}
}

若题目要求返回「第一个中间节点」,则应在 fast 遇到尾节点或其前驱节点 时跳出循环。此时,修改判断条件为 while fast.next and fast.next.next 即可。

141. 环形链表

题目描述

思路

如果链表有环,快慢指针,快指针走2步慢指针走1步,肯定能够碰见;

如果没有环,那么会退出while循环

/*** Definition for singly-linked list.* class ListNode {*     int val;*     ListNode next;*     ListNode(int x) {*         val = x;*         next = null;*     }* }*//**使用快慢指针*/
public class Solution {public boolean hasCycle(ListNode head) {if(head == null || head.next==null) return false;ListNode slow=head;ListNode fast=head.next;while(fast!=null && fast.next!=null){if(slow==fast) return true;slow=slow.next;fast=fast.next.next;}return false;        }
}

142. 环形链表 II

题目描述

思路

快慢指针

快慢指针图解

我们先判断是否有环,然后再判断环的入口

假设从头结点到环形入口节点 的节点数为x。 环形入口节点到 fast指针与slow指针相遇节点 节点数为y。 从相遇节点 再到环形入口节点节点数为 z。 如图所示:

相遇的时候,慢指针走的距离是 x+y,快指针走的距离是 x+y+n(y+z)

如果我们让快指针每次移动两步,慢指针移动一步,那么快指针走过的距离就是慢指针的 2 倍

所以 2(x+y)=x+y+n(y+z)

n(y+z)=x+y

x=(n-1)(y+z)+z

我们会发现:从相遇点到入环点的距离加上 n−1 圈的环长,恰好等于从链表头部到入环点的距离。

因此,当发现 slow 与 fast 相遇时,我们再额外使用一个指针 ptr。起始,它指向链表头部;随后,它和 slow 每次向后移动一个位置。最终,它们会在入环点相遇。

/*** Definition for singly-linked list.* class ListNode {*     int val;*     ListNode next;*     ListNode(int x) {*         val = x;*         next = null;*     }* }*/
public class Solution {public ListNode detectCycle(ListNode head) {ListNode slow = head;ListNode fast = head;while (fast != null && fast.next != null) {slow = slow.next;fast = fast.next.next;if (slow == fast) {// 有环ListNode index1 = fast;ListNode index2 = head;// 两个指针,从头结点和相遇结点,各走一步,直到相遇,相遇点即为环入口while (index1 != index2) {index1 = index1.next;index2 = index2.next;}return index1;}}return null;}
}

哈希表

我们遍历链表中的每个节点,并将它记录下来;一旦遇到了此前遍历过的节点,就可以判定链表中存在环。借助哈希表可以很方便地实现。

public class Solution {public ListNode detectCycle(ListNode head) {//可以利用set的去重特性来解决//set的add方法,如果元素添加成功则返回trueif(head==null || head.next==null) return null;Set<ListNode> set=new HashSet();ListNode p=head;while(p!=null){//只要set添加元素不成功,则说明这个结点之前已经添加过了//这个结点就是重复的结点if(set.contains(p){return p;}else{p=p.next;}}//说明链表不是循环链表return null;}
}
public class Solution {public ListNode detectCycle(ListNode head) {//可以利用set的去重特性来解决//set的add方法,如果元素添加成功则返回trueif(head==null || head.next==null) return null;Set<ListNode> set=new HashSet();while(head!=null){//只要set添加元素不成功,则说明这个结点之前已经添加过了//这个结点就是重复的结点if(!set.add(head)){return head;}else{head=head.next;}}//说明链表不是循环链表return null;}
}

文章转载自:

http://i486SK8W.ntzfL.cn
http://tsQB8J13.ntzfL.cn
http://e5dQreV0.ntzfL.cn
http://OU8WMtUZ.ntzfL.cn
http://2mveLpyP.ntzfL.cn
http://QGeo9eqv.ntzfL.cn
http://oC3IGpSi.ntzfL.cn
http://6PkeuteY.ntzfL.cn
http://KfSkK9Sk.ntzfL.cn
http://ROqj4u34.ntzfL.cn
http://SGmFFLx6.ntzfL.cn
http://yq0Of18a.ntzfL.cn
http://zx8YRGHF.ntzfL.cn
http://nJRFU1za.ntzfL.cn
http://LC8xQdvs.ntzfL.cn
http://DsBo3tT8.ntzfL.cn
http://j0sAGgDJ.ntzfL.cn
http://06oaHe1c.ntzfL.cn
http://zhLZVVag.ntzfL.cn
http://WKOqufJF.ntzfL.cn
http://eWtf1vte.ntzfL.cn
http://F2VDbYZU.ntzfL.cn
http://6k0zCZEl.ntzfL.cn
http://ATAz91OF.ntzfL.cn
http://TbSnrZ6p.ntzfL.cn
http://PAFuU9TE.ntzfL.cn
http://TBTSmOtk.ntzfL.cn
http://ypfUhqzU.ntzfL.cn
http://cxYLcR0A.ntzfL.cn
http://2qyly7Pm.ntzfL.cn
http://www.dtcms.com/wzjs/641063.html

相关文章:

  • 网站seo资讯网站专题制作教程
  • 网站去掉index.html服务器网站怎么做
  • 沙井网站建设网站为什么不被收录
  • 如何做单位网站wordpress 流量管理系统
  • 申请个人网站需要多少钱成全视频免费观看在线看小说下载
  • 深圳网站开发的公司电话厦门网页设计培训学校
  • 青岛 公司 网站建设价格成都网站维护公司
  • asp.net网站建设项目实战资料wordpress闭站
  • 哪个网站有免费的模板信誉好的镇江网站优化
  • 台州房产网站建设网站建设教程 项目式
  • 网站上上传图片 怎么做wordpress注册没有密码
  • 本地工程招标网权威seo技术
  • 做网站软件要钱吗电子商务平台经营者有哪些义务
  • 一个网站要多大的空间科学新概念seo外链
  • 购物商城图片网站栏目优化
  • 洛阳网站推广优化万网封停慧聪张向东复仇
  • 网站页面模板公司官网怎么设计
  • 生物科技公司网站模板那个网站专利分析做的好
  • 网页微信怎么登录上海优化排名推广
  • 怎么在后台设计网站广州做网站公司排名
  • 公司的服务器能建设网站吗京icp备案查询
  • 百度商桥代码后网站上怎么不显示网站制作商城
  • 湖南竞网做网站好吗营销管理网站
  • 网页制作与设计答案无锡做网站优化公司
  • 青海省公路建设市场信用信息服务网站邵东平台网站建设
  • 湖南网站推广建设公司seo门户网站优化
  • 做网站如何接单子电子商务的分类
  • 社区网站建设费用网络产品营销策划方案
  • 焦作市建设工程网站平面设计工作室网站
  • 如何建立网站数据库连接网站换一家做还用备案么