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;
    }
};
相关推荐
Funny_AI_LAB1 小时前
李飞飞联合杨立昆发表最新论文:超感知AI模型从视频中“看懂”并“预见”三维世界
人工智能·算法·语言模型·音视频
RTC老炮4 小时前
webrtc降噪-PriorSignalModelEstimator类源码分析与算法原理
算法·webrtc
草莓火锅6 小时前
用c++使输入的数字各个位上数字反转得到一个新数
开发语言·c++·算法
散峰而望7 小时前
C/C++输入输出初级(一) (算法竞赛)
c语言·开发语言·c++·算法·github
摇滚侠7 小时前
StreamAPI,取出list中的name属性,返回一个新list
数据结构·list
Kuo-Teng7 小时前
LeetCode 160: Intersection of Two Linked Lists
java·算法·leetcode·职场和发展
fie88897 小时前
基于MATLAB的狼群算法实现
开发语言·算法·matlab
偷偷的卷7 小时前
【算法笔记 11】贪心策略六
笔记·算法
ZPC82108 小时前
FPGA 部署ONNX
人工智能·python·算法·机器人
_w_z_j_8 小时前
爱丽丝的人偶
算法