Leecode 21.合并两个有序链表(Java 迭代、递归两种方法)
- 1 //官方:
- 2 class Solution {
- 3 public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
- 4 ListNode prehead = new ListNode(-1);
- 5
- 6
- 7 ListNode prev = prehead;
- 8 while (l1 != null && l2 != null) {
- 9 if (l1.val <= l2.val) {
- 10 prev.next = l1;
- 11 l1 = l1.next;
- 12 } else {
- 13 prev.next = l2;
- 14 l2 = l2.next;
- 15 }
- 16 prev = prev.next;
- 17 }
- 18
- 19
- 20 // 合并后 l1 和 l2 最多只有一个还未被合并完,我们直接将链表末尾指向未合并完的链表即可
- 21 prev.next = l1 == null ? l2 : l1;
- 22
- 23
- 24 return prehead.next;
- 25 }
- 26 }
- 27
- 28
- 29 作者:LeetCode-Solution
- 30 链接:https://leetcode-cn.com/problems/merge-two-sorted-lists/solution/he-bing-liang-ge-you-xu-lian-biao-by-leetcode-solu/
- 31 来源:力扣(LeetCode)
- 32 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
我写的:
- 1 /**
- 2 * Definition for singly-linked list.
- 3 * public class ListNode {
- 4 * int val;
- 5 * ListNode next;
- 6 * ListNode() {}
- 7 * ListNode(int val) { this.val = val; }
- 8 * ListNode(int val, ListNode next) { this.val = val; this.next = next; }
- 9 * }
- 10 */
- 11 class Solution {
- 12
- 13 public ListNode mergeTwoLists(ListNode list1, ListNode list2) {
- 14 ListNode start = new ListNode(-1);
- 15 ListNode q = start;
- 16 if(list1==null || list2==null){//输入为空时
- 17 if(list1==null){
- 18 return list2;
- 19 }else{
- 20 return list1;
- 21 }
- 22 }
- 23
- 24 //设两个指针pa和pb,不断移动pa和pb,并进行比较,则将较小元素接到新链表,该过程直至pa或pb为null
- 25 while(list1!=null && list2!=null){
- 26 if(!(list1.val>list2.val)){
- 27 //list1<=list2
- 28 q.next = list1;
- 29 list1 = list1.next;
- 30 }else{//list1>list2
- 31 q.next = list2;
- 32 list2 = list2.next;
- 33 }
- 34 q = q.next;
- 35 }
- 36
- 37 //之后将未空的接到新链表之后,得到完整升序链表
- 38 q.next = list1 == null ? list2 : list1;
- 39 return start.next;
- 40 }
- 41 }
- 1 class Solution {
- 2 public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
- 3 if (l1 == null) {
- 4 return l2;
- 5 } else if (l2 == null) {
- 6 return l1;
- 7 } else if (l1.val < l2.val) {
- 8 l1.next = mergeTwoLists(l1.next, l2);
- 9 return l1;
- 10 } else {
- 11 l2.next = mergeTwoLists(l1, l2.next);
- 12 return l2;
- 13 }
- 14 }
- 15 }
- 16
- 17
- 18 作者:LeetCode-Solution
- 19 链接:https://leetcode-cn.com/problems/merge-two-sorted-lists/solution/he-bing-liang-ge-you-xu-lian-biao-by-leetcode-solu/
- 20 来源:力扣(LeetCode)
- 21 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
Leecode 21.合并两个有序链表(Java 迭代、递归两种方法)的更多相关文章
- 合并两个有序链表(java实现)
题目: 将两个有序链表合并为一个新的有序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例: 输入:1->2->4, 1->3->4 输出:1->1-&g ...
- LeetCode--021--合并两个有序链表(java)
将两个有序链表合并为一个新的有序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例: 输入:1->2->4, 1->3->4 输出:1->1->2- ...
- 剑指offer-反向遍历链表-栈和递归2种方法(一次性跑通)
- 斐波那契数列-java编程:三种方法实现斐波那契数列
题目要求:编写程序在控制台输出斐波那契数列前20项,每输出5个数换行 斐波那契数列指的是这样一个数列:1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, … 这个数列 ...
- Java实现 LeetCode 21 合并两个有序链表
21. 合并两个有序链表 将两个有序链表合并为一个新的有序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例: 输入:1->2->4, 1->3->4 输出:1 ...
- LeetCode 21. 合并两个有序链表(Merge Two Sorted Lists)
21. 合并两个有序链表 21. Merge Two Sorted Lists 题目描述 将两个有序链表合并为一个新的有序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. LeetCode ...
- [LeetCode] 21. 合并两个有序链表
题目链接:https://leetcode-cn.com/problems/merge-two-sorted-lists/ 题目描述: 将两个有序链表合并为一个新的有序链表并返回.新链表是通过拼接给定 ...
- Leecode刷题之旅-C语言/python-21.合并两个有序链表
/* * @lc app=leetcode.cn id=21 lang=c * * [21] 合并两个有序链表 * * https://leetcode-cn.com/problems/merge-t ...
- [LC]21题 Merge Two Sorted Lists (合并两个有序链表)(链表)
①英文题目 Merge two sorted linked lists and return it as a new list. The new list should be made by spli ...
- LeetCode 21:合并两个有序链表 Merge Two Sorted Lists
将两个有序链表合并为一个新的有序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. Merge two sorted linked lists and return it as a new ...
随机推荐
- Unity SRP Batcher的工作原理
https://blog.csdn.net/zakerhero/article/details/107714801
- banner的使用
Android中banner的使用步骤 Step 1.依赖banner Gradle dependencies{ compile 'com.youth.banner:banner:1.4.9' //最 ...
- viewpager加fragment可滑动加radio跟随滑动
public class MainActivity extends AppCompatActivity implements RadioGroup.OnCheckedChangeListener, V ...
- 运用python中装饰器方法来解决工作中为原有代码添加功能问题
Python 装饰器 在实际的工作中,经常碰到领导或产品经理会提出很多甚至(变态)的产品要求,作为python开发,好不容易完成领导的需求,做出一个产品,并且经过测试成功上线.突然有一天 ...
- C语言学习--练习--合并两个字符串
将两个字符串合并追加在一起, 类似于python的str1+str2 #include<stdio.h> #include<string.h> #include<stdl ...
- httpcanary高级版--不闪退!!!!
地址 https://wwm.lanzouw.com/iOf7Hz11s4j 密码:45of
- el-input 限制输入框只能输入数字和小数
方法一: oninput ="value=value.replace(/[^\d]/g,'')" //只能输入数字 oninput ="value=value.repla ...
- Mysql数据库基础第三章:DML语言
Mysql数据库基础系列 软件下载地址 提取码:7v7u 数据下载地址 提取码:e6p9 mysql数据库基础第一章:(一)数据库基本概念 mysql数据库基础第一章:(二)mysql环境搭建 mys ...
- 02 Spark架构与运行流程
1. 为什么要引入Yarn和Spark. YARN优势1.YARN的设计减小了JobTracker的资源消耗,并且让监测每一个Job子任务(tasks)状态的程序分布式化了,更安全.更优美. 2.在新 ...
- picture --攻防世界
题目描述: 下载得到附件 解题思路: (1)将图片放入winnhex中查看 发现这是一张jpeg图片,修改文件后缀尾.jpg 或者使用binwalk分析 (2)binwalk分离图片 foremost ...