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 ...
随机推荐
- 常见的SPA首屏优化方式
核心是加载和解析的性能优化 加载优化的核心是资源体积和首屏资源数量. 解析优化的核心是资源体积和代码的执行性能. 加载优化 通过webpack 的code splitting合理分包: Code ...
- WEB漏洞扫描工具之OWASP ZAP
添加扫描策略 使用新建的扫描策略
- 维纳攻击 wiener attack
维纳攻击 wiener attack 目录 维纳攻击 wiener attack 攻击条件 使用原理 十三届全国大学生网络安全竞赛 bd 分析 解答 [羊城杯 2020]rrrrrsa (wiener ...
- ArrayList集合的方法
ArrayList元素的增加.插入.删除.清空.排序.反转 using System; using System.Collections; using System.Collections.Gener ...
- Vue基础(2)双向绑定
双向数据绑定 通过修改标签,例:切换radio.checkbox......都会对绑定的数据有影响 通过事件触发方法,修改data中数据,反向作用于radio.checkbox...... 1.v-m ...
- 写一个能快速删除文件的.bat图形化操作界面
用.bat文件,快速删除想要删除的文件 1.首先在桌面上新建一个TXT文件 在文件里面写如图命令 如下: del C:\result.jtl \*.*/f/s/q/a(C:\result.jtl是想要 ...
- 动画图解 Git 的 10 大命令
原文地址:https://dev.to/lydiahallie/cs-visualized-useful-git-commands-37p1 原文作者:Lydia Hallie 前言 尽管 Git 是 ...
- pytorch学习笔记(6)--神经网络非线性激活
如果神经元的输出是输入的线性函数,而线性函数之间的嵌套任然会得到线性函数.如果不加非线性函数处理,那么最终得到的仍然是线性函数.所以需要在神经网络中引入非线性激活函数. 常见的非线性激活函数主要包括S ...
- 攻防世界Web进阶篇——NewsCenter
题目有一个搜索框,下面是搜索结果,最先考虑是sql注入 遇到sql注入,一般先用单引号,1,2尝试.先尝试构造输入为:sd' union select 1,2 #和sd' union select 1 ...
- 小批量excel数据导入oracle
前提是小批量数据,大批量的还是建议用sqlloader 使用PLSQL Developer工具,这个可是大名鼎鼎的Oracle DBA最常使用的工具.在单个文件不大的情况下(少于100000行),并且 ...