今天刷的题是LeetCode第23题。合并k个有序链表。
该题,我现在采用的是暴力法解决。后续将添加其他解决方法。所谓的暴力法求解指的是:将链表中所有数据保存到数组中,然后统一排序,再重新生成新的链表。代码如下:
package DynamicProgramming; import LeetCodePart1.ListNode; import com.sun.xml.internal.ws.api.model.wsdl.WSDLOutput; import org.w3c.dom.ls.LSOutput; import java.util.ArrayList; import java.util.Collections; import java.util.LinkedList; import java.util.List; /** * @date 2019/8/7 * @description 合并K个有序链表 */ public class MergeKLink { public static ListNode merge1(ListNode[] lists){ /** * @param lists * @Description 这是合并k个有序链表的第一个方法。暴力法 * 暴力法的求解思路是:先将所有的链表中的数据保存到一个数组中,然后排序,再生成新的链表 */ int size=lists.length; List<Integer> list=new ArrayList<>(); for (int i = 0; i <size ; i++) { while (lists[i]!=null){ list.add(lists[i].getVal()); lists[i]=lists[i].getNext(); } } Collections.sort(list); ListNode result=new ListNode(list.get(0)); ListNode point =result; for (int i = 0; i <list.size() ; i++) { point.setNext(new ListNode(list.get(i))); point=point.getNext(); } return result.getNext(); } }
原文:https://www.cnblogs.com/cquer-xjtuer-lys/p/11317736.html