合并两个链表

ci博客链接:

合并两个链表

题目链接:https://leetcode-cn.com/problems/merge-two-sorted-lists/submissions/

题目

将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 

 

示例 1:


输入:l1 = [1,2,4], l2 = [1,3,4]
输出:[1,1,2,3,4,4]
示例 2:

输入:l1 = [], l2 = []
输出:[]
示例 3:

输入:l1 = [], l2 = [0]
输出:[0]

 

题解

新建一个链表,在两个链表都不为空的情况下,比较两个链表中元素的值,取小的元素加入到新的链表中,最后判断两个链表那个链表不为空,链接到新链表中即可。

代码

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {
    public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
      ListNode newnode=new ListNode(0);
      ListNode p=newnode;
          while(l1!=null&&l2!=null){
            if(l1.val<l2.val){
                p.next=l1;
                p=p.next;
                l1=l1.next;
            }
            else{
                p.next=l2;
                p=p.next;
                l2=l2.next;
            }
          }
          if(l1!=null){
              p.next=l1;
          }
          if(l2!=null){
              p.next=l2;
          }
      
return newnode.next;
    }
}

 

结果

翻转链表

题目链接:https://leetcode-cn.com/problems/reverse-linked-list/

题目

给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。
 

示例 1:


输入:head = [1,2,3,4,5]
输出:[5,4,3,2,1]
示例 2:


输入:head = [1,2]
输出:[2,1]
示例 3:

输入:head = []
输出:[]

题解

翻转链表我一般都是使用头插法来做,头插法的思想是,新建一个链表,然后一个一个取老的链表中的元素,当取到一个元素时,先把元素的next指向新链表头部next的那个元素,然后再把新链表的头部的next指向新取的元素,这就是在一个链表额的头部插入一个元素,需要先连后断,所以要先把取到元素的next指向新链表头部的next,然后在用新链表的头部指向取到的元素。

代码

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {
    public ListNode reverseList(ListNode head) {
       ListNode newnode=new ListNode(0);
       ListNode p=head;
       while(p!=null){
           ListNode q=p;
           p=p.next;
           q.next=newnode.next;
           newnode.next=q;
       }
       return newnode.next;
    }
}

 

结果

 

posted @ 2021-07-28 09:59  萍2樱释  阅读(262)  评论(0编辑  收藏  举报