1.定义节点
public class ListNode { int val; ListNode next; public ListNode() { } public ListNode(int val) { this.val = val; } public ListNode(int val, ListNode next) { this.val = val; this.next = next; } }
2.操作生成链表
class MyLinkedList { int size=0; ListNode head; public MyLinkedList() { head=new ListNode(0);//长度+1,计算的时候要加上 } public int get(int index) { if(index<0||index>=size) return -1; ListNode cur=head; for(int i=0;i<=index;i++){ cur=cur.next; } return cur.val; } public void addAtHead(int val) { addAtIndex(0,val); } public void addAtTail(int val) { addAtIndex(size,val); } public void addAtIndex(int index, int val) { if(index>size)return; if(index<0)index=0; size++; ListNode pre=head; for(int i=0;i<index;i++){ pre=pre.next; } ListNode temp=new ListNode(val); temp.next=pre.next; pre.next=temp; } public void deleteAtIndex(int index) { if(index<0||index>=size)return; size--; ListNode pre=head; for(int i=0;i<index;i++){ pre=pre.next; } pre.next=pre.next.next; } }
3.合并操作
public class Solution1 { public ListNode mergeTwoLists(ListNode list1, ListNode list2) { ListNode dummy=new ListNode(-1),p=dummy; ListNode p1=list1,p2=list2; while(p1!=null&&p2!=null){ if(p1.val<p2.val){ p.next=p1; p1=p1.next; }else{ p.next=p2; p2=p2.next; } p=p.next; } if(p1!=null){ p.next=p1; } if(p2!=null){ p.next=p2; } return dummy.next; } public static void main(String[] args){ MyLinkedList list1 = new MyLinkedList(); MyLinkedList list2 = new MyLinkedList(); list1.addAtTail(1); list1.addAtTail(2); list2.addAtTail(1); list2.addAtTail(3); Solution1 solution = new Solution1(); ListNode listNode = solution.mergeTwoLists(list1.head.next, list2.head.next); while (listNode!=null){ System.out.println(listNode.val); listNode=listNode.next; } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
2022-01-29 Hystrix熔断器的使用