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

链表内指定区间反转合并K个已排序的链表

链表内指定区间反转

/*** struct ListNode {*	int val;*	struct ListNode *next;*	ListNode(int x) : val(x), next(nullptr) {}* };*/
class Solution {
public:/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** * @param head ListNode类 * @param m int整型 * @param n int整型 * @return ListNode类*/ListNode* reverseBetween(ListNode* head, int m, int n) {// write code hereListNode* dumy = new ListNode(0);dumy->next = head;ListNode* prev = nullptr;ListNode* hh = dumy;int skip = n - m;while (m--) {prev = hh;hh = hh->next;}std::cout << hh->val << " ";ListNode* tt = hh;std::cout << skip << " ";while(skip--)tt = tt->next;std::cout << tt->val << " ";ListNode* tail = tt->next;tt->next = nullptr;prev->next = rever(hh);hh->next = tail;return dumy->next;}ListNode* rever(ListNode* head){if(head == nullptr || head->next == nullptr)    return head;ListNode* newhead = rever(head->next);head->next->next = head;head->next = nullptr;return newhead;}
};

合并K个已排序的链表

/*** struct ListNode {*	int val;*	struct ListNode *next;*	ListNode(int x) : val(x), next(nullptr) {}* };*/
class Solution {
public:/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** * @param lists ListNode类vector * @return ListNode类*/ListNode* mergeKLists(vector<ListNode*>& lists) {int n = lists.size();return two(lists);}ListNode* two(vector<ListNode*>& lists){int n = lists.size();if(n == 0)  return nullptr;if(n == 1)  return lists[0];if(n == 2)  return merge(lists[0], lists[1]);vector<ListNode*> subleft(lists.begin(), lists.begin() + n/2);vector<ListNode*> subright(lists.begin() + n/2, lists.end());return merge(two(subleft), two(subright));}ListNode* merge(ListNode* L1, ListNode* L2){auto dumy = new ListNode(0);ListNode* head = dumy;while (L1 && L2) {if(L1->val < L2->val){head->next = L1;L1 = L1->next;}else {head->next = L2;L2 = L2->next;}head = head->next;}head->next = L1 == nullptr ? L2 : L1;return dumy->next;}
};

http://www.mrgr.cn/news/1137.html

相关文章:

  • 【威锋网-注册安全分析报告-无验证方式导致安全隐患】
  • 【开源分享】CommLite 跨平台文本UI串口调试助手
  • 算法的学习笔记—对称的二叉树(牛客JZ28)
  • .NET辅助角色服务入门简介
  • 大数据背景下基于Python的牛油果销售数据可视化分析
  • 论文阅读:Anchored Densest Subgraph
  • C#:通用方法总计—第19集
  • 【算法】蚁群算法
  • 【IEEE出版】第七届机电一体化与计算机技术工程国际学术会议(MCTE 2024,8月23-25)
  • LLVM - 编译器后端-指令选择
  • Debian系统安装Docker
  • Mysql(三)---增删查改(基础)
  • Python使用Selenium进行Web自动化测试详解
  • react中使用nextjs框架,前端调后端接口跨域解决方式
  • 集合及数据结构第二节————算法、时间复杂度和空间复杂度
  • MPP之Clickhouse
  • 如何在Linux上使用TensorFlow进行机器学习
  • 建造者模式 和 外观模式
  • C知识扫盲------文件的基本操作
  • RCE---eval长度限制绕过技巧