Grind 75 | 3. merge two sorted lists

Leetcode 21. 合并两个有序链表

题目链接

思路:

  • 和归并排序中 merge 部分一致
    1. 两个指针分别指向 2 个链表头
    2. 每次选小的那个加入 res 中,对应指针后移一位;
    3. 重复步骤2,直至一个指针到链表末尾
    4. 将另一个剩余的全部 copy 到 res 中,链表只需要修改末尾结点指向
  • 链表添加结点操作
cpp 复制代码
class Solution {
public:
    ListNode* mergeTwoLists(ListNode* list1, ListNode* list2) {
        ListNode* res = new ListNode();
        ListNode* p = res;
        while (list1 && list2) {
            int x = list1->val;
            int y = list2->val;
            if (x <= y) {
                p->next = list1;
                list1 = list1->next;
            }
            else {
                p->next = list2;
                list2 = list2->next;
            }
            p = p->next;
        }
        if (list1 && !list2) {
            p->next = list1;
        }
        if (list2 && !list1) {
            p->next = list2;
        }
        return res->next;
    }
};
相关推荐
Espresso Macchiato2 分钟前
Leetcode 3551. Minimum Swaps to Sort by Digit Sum
leetcode·排序·leetcode medium·leetcode 3551·leetcode周赛450
ai.Neo20 分钟前
牛客网NC276055:三根木棒能否组成三角形问题详解(ACM中的A题)
数据结构·c++·算法
_安晓30 分钟前
数据结构 -- 树形查找(三)红黑树
数据结构
じ☆ve 清风°39 分钟前
滑动窗口算法详解与C++实现
开发语言·c++·算法
tmacfrank1 小时前
Android 性能优化入门(一)—— 数据结构优化
android·数据结构·性能优化
东莞呵呵1 小时前
吴恩达机器学习(1)——机器学习算法分类
算法·机器学习·分类
JeffersonZU4 小时前
【数据结构】2-3-2 单链表的插入删除
数据结构
m0_738206544 小时前
嵌入式学习的第二十二天-数据结构-栈+队列
数据结构·学习
远瞻。5 小时前
【论文阅读】人脸修复(face restoration ) 不同先验代表算法整理2
论文阅读·算法
先做个垃圾出来………8 小时前
哈夫曼树(Huffman Tree)
数据结构·算法