当前位置: 首页 > wzjs >正文

pc手机模板网站建设外链发布平台大全

pc手机模板网站建设,外链发布平台大全,用bmob做网站,视频类网站建设的成果题目 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 示例 1: 输入:l1 [1,2,4], l2 [1,3,4] 输出:[1,1,2,3,4,4]示例 2: 输入:l1 [], l2 [] 输出&…

题目

将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 

示例

示例 1:

输入:l1 = [1,2,4], l2 = [1,3,4]
输出:[1,1,2,3,4,4]

示例 2:

输入:l1 = [], l2 = []
输出:[]

示例 3:

输入:l1 = [], l2 = [0]
输出:[0]

分析

迭代法

我们使用一个虚拟头节点(dummy node)。这个节点不存储实际数据,只是为了方便操作,它的 next 指针将指向合并后的链表的头节点。

逐步比较两个链表的当前节点,将较小的节点连接到 tail 后面,并移动相应的链表指针。当一个链表遍历完后,直接将另一个链表的剩余部分连接到新链表的末尾。

时间复杂度:O(n+m), n 和 m 分别为两个链表的长度

空间复杂度:O(1)

class Solution {
public:ListNode* mergeTwoLists(ListNode* list1, ListNode* list2) {// 创建一个虚拟头节点ListNode dummy;ListNode* tail = &dummy;// 比较两个链表的节点,按顺序连接到新链表while (list1 && list2) {if (list1->val < list2->val) {tail->next = list1;list1 = list1->next;} else {tail->next = list2;list2 = list2->next;}tail = tail->next;}// 连接剩余的节点if (list1) {tail->next = list1;} else {tail->next = list2;}// 返回合并后的链表return dummy.next;}
};

递归法

每次递归调用返回合并后的链表的头节点。通过递归调用栈,逐层返回合并后的链表,最终返回完整的合并链表。

时间复杂度:O(n+m), n 和 m 分别为两个链表的长度

空间复杂度:O(n+m)

class Solution {
public:ListNode* mergeTwoLists(ListNode* list1, ListNode* list2) {// 递归终止条件if (!list1) return list2;if (!list2) return list1;// 递归合并if (list1->val < list2->val) {list1->next = mergeTwoLists(list1->next, list2);return list1;} else {list2->next = mergeTwoLists(list1, list2->next);return list2;}}
};

知识充电

链表

节点定义

struct ListNode {int val;ListNode* next;ListNode() : val(0), next(nullptr) {}ListNode(int x) : val(x), next(nullptr) {}ListNode(int x, ListNode* next) : val(x), next(next) {}
};

初始化

// 创建链表节点
ListNode* node1 = new ListNode(1);
ListNode* node2 = new ListNode(2);
ListNode* node3 = new ListNode(3);// 连接节点形成链表: 1 -> 2 -> 3
node1->next = node2;
node2->next = node3;// node1是链表的头节点
ListNode* head = node1;

遍历链表

void printList(ListNode* head) {ListNode* current = head;while (current != nullptr) {std::cout << current->val << " ";current = current->next;}std::cout << std::endl;
}

插入节点

void insertAtEnd(ListNode*& head, int value) { //在链表的末尾插入一个新节点ListNode* newNode = new ListNode(value);if (!head) {head = newNode;return;}ListNode* current = head;while (current->next != nullptr) {current = current->next;}current->next = newNode;
}

删除节点

void deleteNode(ListNode*& head, int value) { //删除链表中第一个值为value的节点if (!head) return;if (head->val == value) {ListNode* temp = head;head = head->next;delete temp;return;}ListNode* current = head;while (current->next && current->next->val != value) {current = current->next;}if (current->next) {ListNode* temp = current->next;current->next = current->next->next;delete temp;}
}
http://www.dtcms.com/wzjs/483737.html

相关文章:

  • 网站设计模板html百度浏览器打开
  • 苏州市住房城乡建设局网站网站注册搜索引擎的目的是
  • 自己有主机怎么做论坛网站搜索引擎营销的原理是什么
  • 劳务公司网站怎么做营销策划公司是干什么的
  • 用自己的电脑做服务器建网站短视频seo排名系统
  • 网站建设费用如何列支廊坊seo外包
  • 成立一个做网站的公司成本semir是什么牌子
  • 怎么做时时彩网站代理网络营销推广活动有哪些
  • 自己做网站打开很卡陕西seo排名
  • 北京顺义去哪找做网站的杯子软文营销300字
  • 做效果图的网站有哪些软件有哪些三只松鼠网络营销策略
  • 网站图片优化怎么做网页设计自学要多久
  • 咨询公司网站模板外贸自建站的推广方式
  • 网站建设风险是什么东莞网络营销推广软件
  • 网站开发如何做下载支付网站分享
  • 怎样自己做卖商品的网站今天今日头条新闻
  • 用什么l软件做网站了公司软文代写
  • 教育网站建设供应商腰肌劳损的自我治疗和恢复的方法有什么?
  • 邯郸wap网站建设公司网络推广怎么收费
  • 网站广告怎么赚钱2345电脑版网址导航
  • 青岛专业做网站seo优化需要做什么
  • 网站头部 标签seo研究院
  • 建网站开发语言对比ciliba磁力猫
  • seo网站建设流程seo网络优化师就业前景
  • html网站三级模板汕头网站建设方案推广
  • 做的最少的网站北京seo服务行者
  • 免费制作软件app的网站网站seo基础
  • 集团网站定制网络营销成功案例分析
  • 惠州做网站的公司哪家好上海专业seo排名优化
  • 公司做宣传网站发票可以抵扣不湘潭seo公司