欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

力扣练习题——合并两个有序链表1.0

时间:2023-07-01

合并两个有序链表,虽然成功了,但是内存消耗太大了。
欢迎各位大佬在下边评论。
采用的是一个全新的链表,然后将两个链表里边的数据一个一个的比较,然后放入新的链表里
这题用递归代码量比较少,就是我不熟练,可以在力扣里边找题解看看

package com.shengda.Demo0Likou;import java.util.ArrayList;public class Demo21 { public static void main(String[] args) { ArrayList arr1 = new ArrayList<>(); ArrayList arr2 = new ArrayList<>(); arr1.add(2); arr1.add(4); arr2.add(3); arr2.add(4); Solution so = new Solution(); ListNode list1 = new ListNode(1); for (Integer integer : arr1) { ListNode temp = list1; ListNode list = new ListNode(integer); while (temp.next != null) { temp = temp.next; } temp.next = list; } ListNode list2 = new ListNode(1); for (Integer integer : arr2) { // 创建一个辅助变量 temp ListNode list = new ListNode(integer); ListNode temp = list2; while (true) { // 找到链表的最后 if (temp.next == null) { break; } // 如果没有找到就将temp后移 temp = temp.next; } // 当退出while循环时,表示temp就指向了链表的最后 // 将最后这个节点的next指向新的节点 temp.next =list; } so.mergeTwoLists(list1,list2); }}class Solution { public ListNode mergeTwoLists(ListNode list1,ListNode list2) { ListNode list = new ListNode(); if (list1 == null && list2 == null) { return list1; } else if (list1 != null && list2 == null) { return list1; } else if (list2 != null && list1 == null){ return list2; } while (list1 != null && list2 != null) { ListNode data = new ListNode(); if (list1.val > list2.val) { data.val = list2.val; addList(list,data); list2 = list2.next; } else { data.val = list1.val; addList(list,data); list1 = list1.next; } } if (list1 != null) { addList(list,list1); } else { addList(list,list2); } list = list.next; return list; } private void addList(ListNode list, ListNode data) { ListNode temp = list; while (temp.next != null) { temp = temp.next; } // 当退出while循环时,表示temp就指向了链表的最后 // 将最后这个节点的next指向新的节点 temp.next =data; }}class ListNode { int val; ListNode next; public ListNode() { } public ListNode(int val) { this.val = val; this.next = null; } public ListNode(int val, ListNode next) { this.val = val; this.next = next; } public int getVal() { return val; } public void setVal(int val) { this.val = val; } public ListNode getNext() { return next; } public void setNext(ListNode next) { this.next = next; }}

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。