码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 算法 之 链表


    大概说明

    链表操作,一般两种方式保存结果,一是新建node作为结果,二是创建dummy虚拟节点,通过temp.next的赋值,修改dummy的链表,然后通过dummy.next返回结果。

    学习中,记录备份一下~

    节点结构

    1. class ListNode {
    2. int val;
    3. ListNode next;
    4. ListNode() {}
    5. ListNode(int val) { this.val = val; }
    6. ListNode(int val, ListNode next) { this.val = val; this.next = next; }
    7. }

    操作说明

    1. node1 = node2.next; // 表示node1这个变量的转变
    2. node1.next= node2; // 表示node1代表的链表都更改了这个节点的next

    两两交换链表节点

    1. // 方法1 直接迭代
    2. public ListNode swapPairs1(ListNode head) {
    3. ListNode dummyHead = new ListNode(0);// 设置dummy节点,方便定位最后的答案,dummy自身值不重要
    4. dummyHead.next = head;// 塞初始答案
    5. ListNode temp = dummyHead;// 临时节点,用于node交换过程中保存正确的答案
    6. while (temp.next != null && temp.next.next != null) {// temp.next和temp.next.next之间交换
    7. ListNode node1 = temp.next;// 第一个需要交换的node1
    8. ListNode node2 = temp.next.next;// 第二个需要交换的node2
    9. temp.next = node2;// 交换第一步:node2变第一个
    10. node1.next = node2.next;// 交换第二步:node1 接上 node2.next
    11. node2.next = node1;// 交换第三步:node2 next 指向 node1
    12. temp = node1;// 准备下次循环 temp等于下次交换的上一个,也就是node1
    13. }
    14. return dummyHead.next;// 返回定位节点dummy的next
    15. }
    16. // 方法1 递归
    17. public ListNode swapPairs2(ListNode head) {
    18. if(head == null || head.next == null) return head;// 两两交换 其中一个为空则直接返回
    19. ListNode newHead = head.next;// 新建head ,等于入参的next
    20. head.next = swapPairs2(newHead.next);// head的next 等于 下次交换的返回值
    21. newHead.next = head;// newHead的next等于 刚刚拿到答案的head
    22. return newHead;
    23. }

  • 相关阅读:
    java毕业设计房屋租赁网站Mybatis+系统+数据库+调试部署
    工控行业各品牌程序扩展格式和软件
    Linux-用户和用户组的管理
    leetcode_力扣_1640. 能否连接形成数组
    c语言二维数组解引用复制一篇文章学习用
    手把手教你君正X2000开发板的OpenHarmony环境搭建
    配置Android Studio问题总结
    一文搞懂BeanFactory 和 FactoryBean
    2021年12月 Python(二级)真题解析#中国电子学会#全国青少年软件编程等级考试
    基于PHP+MySQL学生成绩管理系统的设计与实现
  • 原文地址:https://blog.csdn.net/zone_four/article/details/133822215
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号