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

双流规划建设管理局网站一周热点新闻

双流规划建设管理局网站,一周热点新闻,网站开发时间计划,南昌网站建设网站推广目录 1、链表分割 2、找出两个链表的公共结点 3、判断链表是否有环 4、找到有环链表的入口点 1、链表分割 牛客:链表分割_牛客题霸_牛客网 思路: 1. 遍历链表,小于 x 的放到一起,大于等于x的放到一起,分成两段链表…

目录

1、链表分割

2、找出两个链表的公共结点

3、判断链表是否有环

4、找到有环链表的入口点


1、链表分割

牛客:链表分割_牛客题霸_牛客网

思路:

1. 遍历链表,小于 x 的放到一起,大于等于x的放到一起,分成两段链表

2. 不改变原有顺序,需要使用尾插法

3. 最后把两段链表穿起来,返回第一段链表的首节点即可

4. 考虑特殊情况,所有节点都是 >= x 的,也就是说前半段链表是空,结点都在后半段,此时需再加一个第一个区间没有数据的语句

5. 注意,若第二个区间有数据,需要把第二个区间的最后一个结点的 next 置空,否则可能会出现死循环的错误

    public ListNode partition(ListNode pHead, int x) {if(pHead == null) {return null;}ListNode bs = null;ListNode be = null;ListNode as = null;ListNode ae = null;// cur 用于遍历链表ListNode cur = pHead;while(cur != null) {if(cur.val < x) {if(bs == null) {//插入第一个节点bs = cur;be = cur;}else {be.next = cur;be = be.next;}}else {if(as == null) {as = cur;ae = cur;}else {ae.next= cur;ae = ae.next;}}cur = cur.next;}//开始串起来if(bs == null) {//第一个区间没有数据return as;}//第一个区间有数据be.next = as;if(as != null) {//第2个区间有数据ae.next = null;}return bs;}

2、找出两个链表的公共结点

 oj:160. 相交链表 - 力扣(LeetCode)

思路:

1. 分别求两个链表的长度

2. 让长的 head 先走差值步

3. head1 和 head2 同时走

4. 相遇的阶段就是要找的结点

    public ListNode getIntersectionNode(ListNode headA, ListNode headB) {ListNode pl = headA;ListNode ps = headB;int len1 = 0;int len2 = 0;//1、求长度while(pl != null) {len1++;pl = pl.next;}while(ps != null) {len2++;ps = ps.next;}pl = headA;ps = headB;int len = len1 - len2;if(len < 0) {//修正一下 pl和ps的指向pl = headB;ps = headA;len = len2-len1;}// 此时pl一定指向最长的链表,ps一定指向最短的链表;len一定是一个正数//2、走差值步while(len != 0) {pl = pl.next;len--;}//3、同时走while(pl != ps) {pl = pl.next;ps = ps.next;}// 两个链表没有交点if(ps == null) {return null;}// 4、返回相遇结点return pl;}

3、判断链表是否有环

oj:141. 环形链表 - 力扣(LeetCode)

思路:

1. 追击问题,在有环的情况下,使用快慢指针,fast 只要每次比 slow 多走一步,最终一定会相遇;fast 走2步,slow 走1步是最快的情况,因为它们最多追击一个环的长度,一定不会出现slow在环里走很多圈的情况。

2. 如果没有环,走得快的一定先为空,即 fast == null || fast.next == null

    public boolean hasCycle(ListNode head) {ListNode fast = head;ListNode slow = head;while(fast != null && fast.next != null) {fast = fast.next.next;slow = slow.next;if(fast == slow) {return true;}}return false;}public boolean hasCycle2(ListNode head) {ListNode fast = head;ListNode slow = head;while(fast != null && fast.next != null) {fast = fast.next.next;slow = slow.next;if(fast == slow) {break;}}if(fast == null || fast.next == null) {return false;}return true;}

4、找到有环链表的入口点

oj:142. 环形链表 II - 力扣(LeetCode)

推导:

设起始点到入口点的距离为X,相遇点到入口点的距离为Y,环的长度为C

快指针走的路程:X+NC+(C-Y)

慢指针走的路程:X+(C-Y)

  2*(X+(C-Y))=X+NC+(C-Y)
  X+C-Y=NC
  X=NC-C+Y
  X=(N-1)*C+Y
  N=1时,X=Y

结论:无论 Y 在环中转了多少圈,让 slow 从头走,fast 从相遇点走,一步一步走,相遇的地方就是入口点

    public boolean detectCycle(ListNode head) {ListNode fast = head;ListNode slow = head;while(fast != null && fast.next != null) {fast = fast.next.next;slow = slow.next;if(fast == slow) {break;}}if(fast == null || fast.next == null) {return null;}slow = head;while(slow != fast){fast = fast.next;slow = slow.next;}return slow;}

文章转载自:

http://6xfog9Co.qkgwx.cn
http://tYnC4vzA.qkgwx.cn
http://YnSGaZwS.qkgwx.cn
http://JaR1mYAL.qkgwx.cn
http://Vqag3L9T.qkgwx.cn
http://lF9TBhIA.qkgwx.cn
http://pL3U4al7.qkgwx.cn
http://hfWT4lLy.qkgwx.cn
http://bZpLqneK.qkgwx.cn
http://TwY9bk6D.qkgwx.cn
http://Hd0rAmq3.qkgwx.cn
http://f6bPqzV1.qkgwx.cn
http://Hf5y9M6r.qkgwx.cn
http://iE9jYpqS.qkgwx.cn
http://iKvNLtsT.qkgwx.cn
http://QSBw9DQc.qkgwx.cn
http://b5rkSGrz.qkgwx.cn
http://30IIDQDe.qkgwx.cn
http://cIu5XfFJ.qkgwx.cn
http://NoGGZI7L.qkgwx.cn
http://THMXueoY.qkgwx.cn
http://WDUYmQCU.qkgwx.cn
http://Zw9WYjkt.qkgwx.cn
http://NXnozYBC.qkgwx.cn
http://gHcEun3x.qkgwx.cn
http://N57abwkA.qkgwx.cn
http://Ho4coQXj.qkgwx.cn
http://GJ8fgJOt.qkgwx.cn
http://T3wRqSZ6.qkgwx.cn
http://zxaNaw98.qkgwx.cn
http://www.dtcms.com/wzjs/712459.html

相关文章:

  • sns社交网站 建设文档wordpress 投稿 标签
  • 5173游戏交易网站源码寻找扬中网站建设
  • 罗湖网站建设罗湖网站设计c 购物网站开发流程图
  • 长沙网络建设的网站重庆公司直招
  • php响应式网站模板企业网站建设源码 微信 手机
  • 图书馆网站参考咨询建设花垣网站建设
  • 网站建设吸引客户的知名的网页制作公司哪家好
  • 做网站推广链接该怎么做百度后台推广登录
  • 广州网站建设求职简历做网站要用写接口
  • 陕西秦地建设有限公司网站自己做的网站邮箱更改密码程序为什么总出错
  • 资金盘网站开发费用wordpress怎么都是英文
  • 用vs做网站的登录网站建设优化推广教程
  • 百度 网站改版了人事管理软件
  • 电子商务网站建设与管理的感受wordpress 会员可见
  • 网站设置不可粘贴如何在百度发广告
  • 潍坊mip网站建设国都建设(集团)有限公司网站
  • 大连提高网站排名手机下载app安装
  • 建设网站建站网站优化内容
  • 网站备案要网站建设修改教程视频
  • 网页制作与网站开发感想网站建站网站建站
  • 专做logo网站叫什么wordpress安装详细教程
  • 涂料厂做网站有用吗南昌购物网站制作
  • 金融网站建设案例免费网站提交入口
  • 网站建设公司 2018怎么查询网站有没有做网站地图
  • 郑州正规公司网站建设服务做网站设计需要什么软件
  • 建设银行流水查询网站安徽省建设工程资源网
  • 做网站需要多少钱 网络服务微信下载安装免费2022
  • 自己做网站怎么能被访问做网站要学些什么软件
  • 网站建设kpi考核做网站是
  • 廊坊企业网站排名优化开发棋牌游戏软件需要多少钱