zoukankan      html  css  js  c++  java
  • 合并两个链表

    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;
        }
    }

    结果

    出来混总是要还的
  • 相关阅读:
    本周总结
    团队组队
    ListView之checkbox错位问题解决
    ListView
    ScrollView(滚动条)
    elementui中自定义Select选择器样式自定义
    element-ui中Select 选择器列表内容居中
    element-ui中Select 选择器去除点击时的淡蓝色边框
    vue和uni-app不同的类型绑定不同的类名
    根据年月日获取星期几
  • 原文地址:https://www.cnblogs.com/ping2yingshi/p/15069075.html
Copyright © 2011-2022 走看看