码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • LeetCode每日练习之链表常见题目


    1. 两个链表的第一个公共节点

    输入两个链表,找出它们的第一个公共节点。

    1.1 思路

    1. 哈希和集合,先将一个链表全部存到Map里,然后一边遍历第二个链表,一边检测Hash是否存在当前结点,如果有交点,那么一定能检测出来,
    2. 使用两个栈,分别将两个链表入栈,然后分别出栈对比,如果相等就出栈,知道找到最晚出栈的那组,
    3. 拼接两个字符串,将两个字符串AB,拼接成AB和BA,拼接后可以发现规律,最后一部分一样,那么第一个相等的结点就是交点。
    4. 差和双指针问题,先统计两个链表的长度,求出两个长度的差,让长的先走k步,然后两个指针同时走,第一个相等的结点就是两个的交点。

    1.2 代码

    1. class Solution {
    2. ListNode getIntersectionNode(ListNode headA, ListNode headB) {
    3. //差和双指针
    4. if(headA == null || headB == null){
    5. return null;
    6. }
    7. //1.先计算两个链表的长度
    8. ListNode node1 = headA;
    9. ListNode node2 = headB;
    10. int l1=0,l2=0;
    11. while(node1 != null){
    12. node1 = node1.next;
    13. l1++;
    14. }
    15. while(node2 != null){
    16. node2 = node2.next;
    17. l2++;
    18. }
    19. int sub = l1>l2?l1-l2:l2-l1;
    20. //2.长的先走k步
    21. ListNode cur1 = headA;
    22. ListNode cur2 = headB;
    23. if(l1 > l2){
    24. while(sub != 0){
    25. cur1 = cur1.next;
    26. sub--;
    27. }
    28. }
    29. if(l1 < l2){
    30. while(sub != 0){
    31. cur2 = cur2.next;
    32. sub--;
    33. }
    34. }
    35. //两个指针一起走,值相同的时候代表有交点
    36. while(cur1 != cur2){
    37. cur1 = cur1.next;
    38. cur2 = cur2.next;
    39. }
    40. return cur1;
    41. }
    42. }

     2. 回文链表

    给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。

    2.1 思路

    将链表存入到栈中,然后一边遍历,一边出栈比较,如果出现不相等则返回false,否则返回true。

    2.2 代码

    1. class Solution {
    2. public boolean isPalindrome(ListNode head) {
    3. //压入栈中,一遍遍历一边出栈,只要有一个不相等就返回false
    4. ListNode node1 = head;
    5. Stack stack = new Stack<>();
    6. while(node1 != null){
    7. stack.push(node1.val);
    8. node1 = node1.next;
    9. }
    10. ListNode node2 = head;
    11. while(node2 != null){
    12. if(node2.val != stack.pop()){
    13. return false;
    14. }
    15. node2 = node2.next;
    16. }
    17. return true;
    18. }
    19. }

  • 相关阅读:
    08-高性能表结构及索引设计最佳实践-05
    logstash迁移es自建数据到pass服务
    vue3别名配置(vite)
    HTML+CSS+JavaScript七夕情人节表白网页【樱花雨3D相册】超好看
    spring-cloud-starter-alibaba-nacos-discovery 依赖不下来的解决办法
    asp.net班级管理系统VS开发sqlserver数据库web结构c#编程Microsoft Visual Studio
    五面腾讯技术专家岗,已拿offer,这些面试题你能答出多少? 还不来学习啊!
    【Azure Developer】在Azure VM (Windows) 中搭建 kafka服务,并且通过本地以及远程验证 发送+消费 消息
    Spring AOP
    论文阅读_异常检测综述
  • 原文地址:https://blog.csdn.net/m0_54138535/article/details/132985899
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号