总算开始了第一次的博客。内心战战兢兢o(╥﹏╥)o

下面来自LeetCode的一道链表题。

题目描述:

编写一个程序,找到两个单链表相交的起始节点。

如下面的两个链表

在节点 c1 开始相交。

注意:

1.如果两个链表没有交点,返回 null.
    2.在返回结果后,两个链表仍须保持原有的结构。
    3.可假定整个链表结构中没有循环。
    4.程序尽量满足 O(n) 时间复杂度,且仅用 O(1) 内存。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/intersection-of-two-linked-lists

解题思路:

刚拿到题目,想的是对A的每一个结点,遍历B并且寻找第一个相同的结点,时间复杂度为O(mn)!!!!

但题目要求时间复杂度为O(n),然后再想一下,................

思路大概是对AB两个链表分别遍历进行比较,但是必须是相同长度的链表,那么就先把长链表在与短链表相交前多出来的部分截掉,所以就是先求长度,将长链表在(长链表.length - 短链表.length)处开始遍历,短链表从头遍历,然后相同时就是相交的结点处,返回,如果两个链表没有相交,则两指针最终都指向Null,则返回Null,Over~

我的代码:

/*** Definition for singly-linked list.* public class ListNode {*     int val;*     ListNode next;*     ListNode(int x) {*         val = x;*         next = null;*     }* }*/public class Solution {public static int getLength(ListNode head){int count=0;ListNode cur=head;while(cur!=null){cur=cur.next;count++;}return count;}public ListNode getIntersectionNode(ListNode headA, ListNode headB) {int a=getLength(headA);int b=getLength(headB);ListNode cur1=headA;ListNode cur2=headB;if(a>=b){for(int i=0;i<a-b;i++){cur1=cur1.next;}}else{for(int i=0;i<b-a;i++){cur2=cur2.next;}}while(cur1!=null&&cur1!=cur2){cur1=cur1.next;cur2=cur2.next;}return cur1;}
}

看着自己的代码,emmmmmmmm,自我感觉良好,然后秉着学习的态度,就去评论区逛了一下,噗,果然我就是个萌新。

大佬的优雅代码:

public ListNode getIntersectionNode(ListNode headA, ListNode headB) {if (headA == null || headB == null) return null;ListNode pA = headA, pB = headB;while (pA != pB) {pA = pA == null ? headB : pA.next;pB = pB == null ? headA : pB.next;}return pA;
}

原理应该就是,利用(a+b).length=(b+a).length,a是链表A除相交部分,b是链表B除相交部分。这段代码不仅省去了求长度差的时间,代码本身还简洁了不少,简直赏心悦目。

小萌新膝盖奉上。

感受:

最近总算知道要开始好好学习了,突然感觉学习的感觉真的炒鸡棒,理解了任何一点知识都会有一丝小开心~快让我沉浸于学习

这是博主第一次写博客,因为刚学Java不久,所以可能会有一些知识的欠缺导致一些错误,看到麻烦各位大佬在线指导~

小萌新开始做题啦!----------相交链表相关推荐

  1. 小萌新准备参加五一建模大赛纪实

    小萌新准备参加五一数学建模大赛纪实 2020.4.20 2020.4.21 2020.4.22 2020.4.28 2020.5.1 本萌新在对数学建模一无所知的情况下,被邀请一起参加数学建模比赛,虽 ...

  2. 浙江杭电计算机系的秦嘉珩,迎新季丨@2019级杭电小萌新,你们的最美辅导员上线啦!...

    原标题:迎新季丨@2019级杭电小萌新,你们的最美辅导员上线啦! 2019级小萌新们 欢迎大家加入杭州电子科技大学 在即将开启的四年大学生活中 有这样一位亲切的老师 陪你军训,与你谈心,为你保驾护航 ...

  3. 关于看雪安全峰会--web小萌新的内心独白

    这次的看雪安全峰会是看雪举办的第一届安全峰会,看雪作为国内二进制的黄埔军校,已经走过了17个年头,看雪培养了大批的安全人才,所以这次峰会可以说是安全圈特别是二进制圈大佬们的分享.聚会.作为一个web小 ...

  4. 来自某位小萌新的Web安全学习--day1

    标题草草介绍一哈哈: 哈喽!大家好!这里是网安一名小萌新发来的报道.19级网络空间安全本科生.现在的时间应该是2021-7-14日,正是大二升到大三的暑假阶段.由于前两年种种原因导致我个人的学习方向有 ...

  5. c++实现含有中文字符的字符串逆转,如:“我是小萌新”转换成“新萌小是我”

    一个中文字符占两字节,所以逆转也得两两字符进行逆转,如上图 可得出0和8,1和9,2和6,3和7进行下标交换 由此可得出以下代码: #include <iostream> #include ...

  6. 萌新自己做的 pixi 宝藏猎人小游戏

    预览图(写的是默认全屏的,这是手机端效果) ps: 不要吐槽我的游戏元素截图谢谢,不想用ps了-本来有个门是要勇者带着宝箱回去的,不想做了- 做的是键盘控制移动的 主角是手写的监听点击事件,有点low ...

  7. [租房]刚步入社会的小萌新,休想坑小妹妹,安排!

    这段时间没有更文,学校的事儿和工作上的事儿挤在一起.这一篇给大家分享下关于应届生找房的点滴吧,也是自己在找房过程中的一点体会,对于考研或者最近出去找工作的适用,选择性查看.对了,不会有十全十美的,需要 ...

  8. java小光棍数_java做题记录第4期

    4.1 幸运数 4.1_1题目描述 幸运数是波兰数学家乌拉姆命名的.它采用与生成素数类似的"筛法"生成. 首先从1开始写出自然数1,2,3,4,5,6,.... 1 就是第一个幸运 ...

  9. 小萌新的python进阶之路(一)

    很早之前写过一篇blog为了记录自己自学java的整个过程,可是由于生(lan)活(de)所(geng)迫(xin)和一些生活上的原因,中断了学习,也停止了更博. 今天新开这篇博客是因为自己真正用上了 ...

最新文章

  1. 给图像特征提取开个“ViP”是什么效果?字节牛津提出视觉解析器,全面超越HaloNet!...
  2. 在特定索引处插入字符串
  3. html自适应pc窗口大小_自适应技术很难吗?为什么Shopyy平台将网站分为PC端和移动端...
  4. android状态栏半透明灰色,Android7.0沉浸式状态栏蒙灰问题完美解决
  5. c语言最小点对问题_C语言教程(一):程序开发理论基础!
  6. 苹果x为什么是android,技术角度分析:这就是苹果手机和安卓手机为什么有差距的主要原因...
  7. syn攻击 喝茶_如何喝茶
  8. 超链接一般有两种表现形式_外链的三种常见表现形式
  9. java例程练习(数组复制与arraycopy)
  10. Topic 9. SCI 文章第二张表—单因素回归分析表
  11. 井字棋游戏的实现和注意细节
  12. 火狐插件(fireBug)
  13. Mybatis“四大神兽”
  14. DBCO-PALA-b-PEG DBCO-聚硫辛酸-聚乙二醇
  15. 操作系统正则符号知识点总结
  16. android 模拟器截屏 保存到模拟器,天天模拟器屏幕截图保存在哪里?天天模拟器图库位置介绍...
  17. JVM内存Dump原理与在线分析实战 | 得物技术
  18. 目标检测的国内外研究现状
  19. 一个大一程序员的反思
  20. 电视剧看合适的即可发生的方式根深蒂固

热门文章

  1. 直播平台源码搭建教程之Android音视频开发
  2. Java提取身份证照片数据,so easy
  3. 实现短信验证码有效时间
  4. 龙智集团赢得2022年Atlassian与AWS云销售竞赛
  5. 览书记之汽车电子信息技术
  6. Uniapp|image无法显示图片
  7. 微生物菌群宏基因组研究技术分享
  8. 手机性能指标详细测试步骤【Android/IOS】
  9. 【Note】微信小程序js使用农历(一行代码)
  10. 计算机服务器地址在哪里查,查看电脑服务器id地址