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

数据结构与算法--实现链表的复制(链表中节点比较特殊,含有一个rand指针,指向任意一个节点)

已在leetcode上执行通过
在这里插入图片描述


// https://leetcode.com/problems/copy-list-with-random-pointer/  leetcode地址

public class CopyListWithRandom {

    public static class Node {
        int val;
        Node next;
        Node random;

        public Node(int val) {
            this.val = val;
            this.next = null;
            this.random = null;
        }
    }

    public static Node copyRandomList2(Node head) {
        if (head == null) {
            return null;
        }

        Node cur = head;
        Node next;
        while (cur != null){
            next = cur.next;
            Node tmp = new Node(cur.val);
            cur.next = tmp;
            tmp.next = next;
            cur = next;
        }

        cur = head;
        Node curNext;
        while (cur != null){
            curNext = cur.next;
            next = cur.next.next;

            Node rand = cur.random;
            //curNext.random = rand.next;
            curNext.random = rand != null ? rand.next : null;
            cur = next;
        }

        cur = head;
        Node newHead = cur.next;
        while (cur != null){
            curNext = cur.next;
            next = cur.next.next;

            cur.next = next;
            if(next != null) {
                curNext.next = next.next;
            }

            cur = next;
        }

        return newHead;
    }
}


http://www.kler.cn/a/539323.html

相关文章:

  • 使用LLaMA Factory踩坑记录
  • at coder ABC 392
  • 【Android开发AI实战】选择目标跟踪基于opencv实现——运动跟踪
  • 人工智能浪潮下脑力劳动的变革与重塑:挑战、机遇与应对策略
  • Java | RESTful 接口规范
  • 【AIGC魔童】DeepSeek v3提示词Prompt书写技巧
  • 电脑运行黑屏是什么原因?原因及解决方法
  • PM2 与 Docker 结合使用:Node.js 应用的高效管理与部署
  • 项目的虚拟环境的搭建与pytorch依赖的下载
  • MyBatis-Plus快速使用
  • 【在线优化】【有源程序】基于遗传算法(GA)和粒子群优化(PSO)算法的MPPT控制策略
  • PHP的filter_var函数的安全问题
  • 相机开启状态下拔出SD卡导致的数据丢失问题及恢复方法
  • 蓝桥杯小白打卡第三天
  • 最短路径问题-------Dijkstra算法
  • 一个基于ESP32S3和INMP441麦克风实现音频强度控制RGB灯带律动的代码及效果展示
  • 【Java基础】为什么不支持多重继承?方法重载和方法重写之间区别、Exception 和 Error 区别?
  • 【SQLite】设置本地时间戳默认值
  • 【PDF提取内容】如何批量提取PDF里面的文字内容,把内容到处表格或者批量给PDF文件改名,基于C++的实现方案和步骤
  • DeepSeek与Vue.js携手:打造高效分页组件之旅
  • 在CT107D单片机综合训练平台上,8个数码管分别单独依次显示0~9的值,然后所有数码管一起同时显示0~F的值,如此往复。
  • stm32编译过程剖析 MicroPython openmv运行逻辑分析 MicroPython和传统c语言编译的比较 头脑风暴
  • 本地部署DeepSeek-R1模型(新手保姆教程)
  • 树与二叉树的概念
  • Netty:高性能网络应用框架的深度解析
  • C++病毒