剑指offer--合并两个排序的链表

解题思路

此处撰写解题思路

代码

/**
 * 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 dumNode=new ListNode(0);//伪头节点,在这之后添加数据
        ListNode curNode=dumNode;//新链表的当前节点
        while(l1!=null && l2!=null){
          if(l1.val<l2.val){
              curNode.next=l1;
              l1=l1.next;
          }else{//l1.val>=l2.val的时候
              curNode.next=l2;
              l2=l2.next;
          } 
          curNode=curNode.next; 
        }
        //当跳出循环时,代表l1为空,或者l2为空;
        if(l1!=null){
            curNode.next=l1;
        }else{
            curNode.next=l2;
        }
    return dumNode.next;
    }
}
`#阅读题目可知,需要使用指针遍历两个链表,边遍历边比较大小,把较小的值存入新的链表`
#首先,由于新的链表并没有起始节点,因此先定义一个伪头节点。ListNode dumNode= new ListNode(0);`
#继续定义一个当前节点curNode,用于向新链表中添加节点。
#接下来遍历当前两个链表,当两个链表都不为空时,
#l1.val<l2.val,就把l1添加到curNode.next,l1后移,l1=l1.next;
#l1.val>=l2.val,就把l2添加到curNode.next,l2后移,l2=l2.next;
#把当前节点向下移动一个,持续向新链表中添加值
#当l1或l2其中一个为空时,l1不为空,就把l1添加到新链表,如果l2不为空,就把l2添加到新链表
#最后返回的时候,要返回伪头节点的下一个,才是新链表的第一个值。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值