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;
    }
};
相关推荐
Dream it possible!16 小时前
LeetCode 面试经典 150_二叉树层次遍历_二叉树的层平均值(82_637_C++_简单)
c++·leetcode·面试·二叉树
小羊失眠啦.16 小时前
Rust核心库(core)深度解析:无依赖基石的设计与实践
数据库·算法·rust
Wenhao.16 小时前
LeetCode Hot100 每日温度
数据结构·算法·leetcode·golang
吃着火锅x唱着歌16 小时前
LeetCode 1679.K和数对的最大数目
算法·leetcode·职场和发展
im_AMBER16 小时前
Leetcode 57
笔记·学习·算法·leetcode
im_AMBER16 小时前
Leetcode 58 | 附:滑动窗口题单
笔记·学习·算法·leetcode
sin_hielo16 小时前
leetcode 2154
算法·leetcode
Sunhen_Qiletian16 小时前
YOLO的再进步---YOLOv3算法详解(上)
算法·yolo·计算机视觉
CodeAmaz16 小时前
通用 List 分批切割并循环查询数据库工具类
java·数据结构·工具类·分页
xlq2232216 小时前
15.list(上)
数据结构·c++·list