LeetCode 第21题 合并有序链表

(一)题目描述

Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists.

Example:

Input: 1->2->4, 1->3->4
Output: 1->1->2->3->4->4

(二)算法描述

  1 先创建一个头结点,用来合并两个有序链表

  2 声明一个节点的引用指向头结点,用于返回头结点信息,进行访问输出

  3 分为节点信息两个都不为空和有一个为空的情况进行编码

(三)LeetCode AC代码

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
class Solution {

    public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
       //创建头结点
       ListNode temp = new ListNode(0);
       //生明一个引用保存头结点信息
       ListNode save = temp;

       while(l1 != null && l2 != null){
           if(l1.val < l2.val){
               temp.next = l1;
               l1 = l1.next;
               temp = temp.next;
           }else{
               temp.next = l2;
               l2 = l2.next;
               temp = temp.next;
           }
       }
       if(l1 == null){
           temp.next = l2;
       }
       if(l2 == null){
           temp.next = l1;
       }
       return save.next;
    }
}


          

            祝明天好运,加油自己!!



原文地址:https://www.cnblogs.com/misscai/p/10023853.html

时间: 2024-08-06 14:16:34

LeetCode 第21题 合并有序链表的相关文章

LeetCode 第21题 合并两个有序链表

/*将两个有序链表合并为一个新的有序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例: 输入:1->2->4, 1->3->4输出:1->1->2->3->4->4 Definition for singly-linked list. public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } */ 1 class Solutio

剑指OFFER之合并有序链表(九度OJ1519)

题目描述: 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则.(hint: 请务必使用链表.) 输入: 输入可能包含多个测试样例,输入以EOF结束.对于每个测试案例,输入的第一行为两个整数n和m(0<=n<=1000, 0<=m<=1000):n代表将要输入的第一个链表的元素的个数,m代表将要输入的第二个链表的元素的个数.下面一行包括n个数t(1<=t<=1000000):代表链表一中的元素.接下来一行包含m个元素,s(1<

递归逆转链表和递归合并有序链表的代码

#include <stdio.h> struct node { int val; struct node *pNext; }; struct node *gen() { struct node *pHead = NULL; for(int i = 10; i > 0; i--){ struct node * p = malloc(sizeof(struct node)); p -> val = i; p -> pNext = pHead; pHead = p; } retu

代码题(14)— 合并有序链表

1.21. 合并两个有序链表 将两个有序链表合并为一个新的有序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例: 输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next

LeetCode(109):有序链表转换二叉搜索树

Medium! 题目描述: 给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树. 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1. 示例: 给定的有序链表: [-10, -3, 0, 5, 9], 一个可能的答案是:[0, -3, 9, -10, null, 5], 它可以表示下面这个高度平衡二叉搜索树: 0 / -3 9 / / -10 5 解题思路: 这道题是要求把有序链表转为二叉搜索树,和之前那道Convert Sorted A

21. Merge Two Sorted Lists (Java 合并有序链表 空间复杂度O(1))

题目: Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists. 分析:合并两个有序序列,这个归并排序中的一个关键步骤.这里是要合并两个有序的单链表.由于链表的特殊性,在合并时只需要常量的空间复杂度. 编码: public ListNode mergeTwoLists(Li

LeetCode 第23题 合并K个排序链表

/* 23. 合并K个排序链表 合并 k 个排序链表,返回合并后的排序链表.请分析和描述算法的复杂度. 示例: 输入:[ 1->4->5, 1->3->4, 2->6]输出: 1->1->2->3->4->4->5->6 */ /** * Definition for singly-linked list. public class ListNode { int val; ListNode next; ListNode(int * x

合并有序链表

using namespace std; struct ListNode { int         m_Data; ListNode*   m_pNext; ListNode(int value,ListNode* next = NULL):m_Data(value),m_pNext(next){} }; /* 两个链表  比如链表1: 1->3->5->7->9 链表2:  2->4->6->8->10 跟我们合并两个数组一样,链表1的头结点  和链表2

leetcode第21题-Merge Two Sorted Lists

本题目是意思是把两个有序的链表合成一个有序的链表,考察了归并算法和链表的操作. 代码也相对比较简单,简单说一下归并函数里三个指针的作用,sum是返回的第一个指针,cur是所要返回的链表里走到的位置,put是对于取到的l1或l2里的某一个指针节点.全部的可运行代码如下: #include<stdio.h> #include<string.h> #include<stdlib.h> struct ListNode{ int value; ListNode *next; };