两个链表去重合并排序成一个链表
方法一: 将两个链表放在同一个TreeSet中,然后遍历TreeSet,将TreeSet的值放入一个新链表中
public Node megerLinkedFunc01(Node node1, Node node2) { Set<Integer> mergeSet = new TreeSet<Integer>(); while (node1.next != null) { mergeSet.add(node1.value); node1 = node1.next; } while (node2.next != null) { mergeSet.add(node2.value); node2 = node2.next; } Node start = new Node(); Node current = start; Node before = null; for (Integer v : mergeSet) { current.value = v; Node nextNode = new Node(); current.next = nextNode; before = current; current = nextNode; } before.next = null; return start; } //定义一个链表 static class Node { Node next; int value; public Node(int value) { this.value = value; } public Node() { } @Override public String toString() { return value + "->" + (next == null ? "" : next); } }
验证:
public static void main(String[] args) { Node node11 = new Node(11); Node node12 = new Node(12); Node node13 = new Node(11); Node node21 = new Node(21); Node node22 = new Node(22); Node node23 = new Node(22); node11.next = node12; node12.next = node13; node21.next = node22; node22.next = node23; MergeLinked mergeLinked = new MergeLinked(); System.out.println("Node1:" + node11); System.out.println("Node2:" + node21); System.out.println(mergeLinked.megerLinkedFunc01(node11, node21)); }
输出结果:
11->12->21->22
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· 2 本地部署DeepSeek模型构建本地知识库+联网搜索详细步骤