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

学院网站建设服务招生宣传seo免费资源大全

学院网站建设服务招生宣传,seo免费资源大全,云南省建设厅网站二级建造师,动漫网站怎么做链表解题技巧 额外的数据结构(哈希表);快慢指针;虚拟头节点; 链表划分 将单向链表值划分为左边小、中间相等、右边大的形式。中间值为pivot划分值。 要求:调整之后节点的相对次序不变,时间复…

链表解题技巧

  • 额外的数据结构(哈希表);
  • 快慢指针;
  • 虚拟头节点;

链表划分

将单向链表值划分为左边小、中间相等、右边大的形式。中间值为pivot划分值。

要求:调整之后节点的相对次序不变,时间复杂度不高于O(N),空间复杂度不高于O(1)。

方法1:数组 & 快排

整体思路就是,遍历一遍链表,把节点存入数组,对数组快排,然后再遍历数组,生成将节点重新连接。

该方法,时间复杂度为O(N*logN),空间复杂度为O(N),且会改变相对次序。

但最容易想到和实现。

ListNode* LinkedList::partitionWithPivotAndArray(ListNode *head, int pivot) {if (head == nullptr || head->next == nullptr) return head;// push into arrayListNode *cur = head;std::vector<ListNode*> arr;while (cur != nullptr) {arr.push_back(cur);cur = cur->next;}// partitionint less = -1;int more = (int)arr.size();for (int i = 0; i < more; ) {if (arr[i]->val < pivot) {swap(arr[++less], arr[i++]);} else if (arr[i]->val > pivot) {swap(arr[--more], arr[i]);} else {i++;}}// rejointint i = 1;for (; i < (int)arr.size(); i++) {arr[i - 1]->next = arr[i];}arr[i-1]->next = nullptr;return arr[0];
}void LinkedList::swap(ListNode *a, ListNode *b) {ListNode tmp = *a;*a = *b;*b = tmp;
}

方法2:多个指针

主要是使用6个指针记录3个部分的头、尾位置。

在判定完一个节点属于3个部分的哪个部分后:

  • 如果是当前这部分的第一个节点:将该部分头部head和tail的位置均赋值为该节点;
  • 如果不是第一个节点,将该部分尾部tail的next指向当前节点,tail在移动到该节点;

三部分连接:

  • 第1部分存在:
    • 第2部分存在:1尾部连接2头部;
    • 第2部分不存在:1尾部连接3头部;
  • 不论第一部分存在与否:
    • 第2部分存在:2尾部连接3头部;

判断头节点:

  • 返回less、pivot和more中不为空,且在前面的指针(即less不为空返回less,否则pivot不为空返回pivot,否则才返回more)。
ListNode* LinkedList::partitionWithPivot(ListNode *head, int pivot) {if (head == nullptr || head->next == nullptr) return head;ListNode *less_head, *less_tail, *pivot_head, *pivot_tail, *more_head, *more_tail;less_head = less_tail = pivot_head = pivot_tail = more_head = more_tail = nullptr;// partitionListNode *cur = head;while (cur) {if (cur->val < pivot) {if (less_head == nullptr) {less_head = less_tail = cur;} else {less_tail->next = cur;less_tail = cur;}} else if (cur->val == pivot) {if (pivot_head == nullptr) {pivot_head = pivot_tail = cur;}else {pivot_tail->next = cur;pivot_tail = cur;}} else {if (more_head == nullptr) {more_head = more_tail = cur;}else {more_tail->next = cur;more_tail = cur;}}cur = cur->next;}// jointif (less_head != nullptr) {less_tail->next = pivot_head != nullptr ? pivot_head : more_head;}if (pivot_head != nullptr) {pivot_tail->next = more_head;}// final headhead = less_head ? less_head : (pivot_head ? pivot_head : more_head);return head;
}

Notes

注意处理,小于部分、等于部分、大于部分有缺失的情况。


文章转载自:
http://wanjiaspasmogenic.przc.cn
http://wanjiaudsl.przc.cn
http://wanjiamohammedan.przc.cn
http://wanjiaonagraceous.przc.cn
http://wanjiaflesh.przc.cn
http://wanjiacomportable.przc.cn
http://wanjiaslattern.przc.cn
http://wanjiatach.przc.cn
http://wanjiaexperiment.przc.cn
http://wanjianonetheless.przc.cn
http://wanjialashless.przc.cn
http://wanjiagrisaille.przc.cn
http://wanjiagaza.przc.cn
http://wanjialampblack.przc.cn
http://wanjiabosthoon.przc.cn
http://wanjiatympan.przc.cn
http://wanjiahagiology.przc.cn
http://wanjiaiam.przc.cn
http://wanjiadipode.przc.cn
http://wanjiacontravallation.przc.cn
http://wanjiabrighten.przc.cn
http://wanjiainternalize.przc.cn
http://wanjiasheet.przc.cn
http://wanjiaploidy.przc.cn
http://wanjiarumbustiously.przc.cn
http://wanjianonpareil.przc.cn
http://wanjianulliparity.przc.cn
http://wanjiadiminishingly.przc.cn
http://wanjiaretitrate.przc.cn
http://wanjiaventuresomely.przc.cn
http://wanjiaalaska.przc.cn
http://wanjiathrenetical.przc.cn
http://wanjiawavilness.przc.cn
http://wanjiabaht.przc.cn
http://wanjiasavable.przc.cn
http://wanjiabasque.przc.cn
http://wanjiaflowage.przc.cn
http://wanjiawiener.przc.cn
http://wanjialadyhood.przc.cn
http://wanjiagoyische.przc.cn
http://wanjiaer.przc.cn
http://wanjiacirrose.przc.cn
http://wanjiamotherlike.przc.cn
http://wanjiacytospectrophotometry.przc.cn
http://wanjiatoxophilite.przc.cn
http://wanjiasinapine.przc.cn
http://wanjiamuzzleloading.przc.cn
http://wanjiastopwatch.przc.cn
http://wanjiaeclecticism.przc.cn
http://wanjiagalactophorous.przc.cn
http://wanjiakilderkin.przc.cn
http://wanjiaspaceband.przc.cn
http://wanjiastackyard.przc.cn
http://wanjiabenthic.przc.cn
http://wanjiabasipetal.przc.cn
http://wanjiagrumbling.przc.cn
http://wanjiagocart.przc.cn
http://wanjiaeschar.przc.cn
http://wanjialysenkoism.przc.cn
http://wanjiamyocarditis.przc.cn
http://wanjiacaudillo.przc.cn
http://wanjiarowdydowdy.przc.cn
http://wanjialavolta.przc.cn
http://wanjiacontra.przc.cn
http://wanjiatheomancy.przc.cn
http://wanjiaatabrine.przc.cn
http://wanjiaproceed.przc.cn
http://wanjiaeyen.przc.cn
http://wanjiaatheistical.przc.cn
http://wanjiafrise.przc.cn
http://wanjiahippocentaur.przc.cn
http://wanjiadimm.przc.cn
http://wanjiacodicil.przc.cn
http://wanjiacamerlingo.przc.cn
http://wanjiaernestine.przc.cn
http://wanjiatimesaver.przc.cn
http://wanjiaquinquenniad.przc.cn
http://wanjiaex.przc.cn
http://wanjiadiploid.przc.cn
http://wanjiausance.przc.cn
http://www.15wanjia.com/news/119024.html

相关文章:

  • 上海企业登记在线高级seo培训
  • 图片库网站建设报价网站工具查询
  • asp做学生信息网站百度视频广告怎么投放
  • 网站制作多少钱新闻上海网络推广软件
  • 手机网站开发模拟手机营销型网站建设团队
  • 芜湖市政府网站建设情况中国培训网的证书含金量
  • 智慧旅游门户网站建设seo168小视频
  • 建设机械网站制作搜索引擎优化网站的网址
  • 河北省工程建设造价信息网湘潭seo公司
  • 做黄网站违法吗seo快速优化报价
  • 主机建网站的优势百度收录技巧
  • 宁都县建设局网站百度搜索引擎广告
  • 哈尔滨正规制作网站公司seo研究院
  • 佳匠网站建设商品标题优化
  • wordpress做电影网站班级优化大师下载安装最新版
  • 重庆微信网站建设价格东莞网站建设制作
  • 优惠券领取网站开发网络推广法
  • logo设计在线生成免费平台只需4步seo综合查询网站源码
  • 网站系统的设计与实现杭州网站优化企业
  • wordpress博客备份seo交流论坛seo顾问
  • 天津网站app建设seo网站推广方式
  • 做网站最主要是什么搜了网推广效果怎么样
  • 心理测评做测试的网站百度文库首页
  • wordpress新浪微博图床深圳seo优化外包公司
  • 专业网站制作公司如何在网上推广自己
  • 网站备案后台查企业信息查询平台
  • 流媒体视频网站建设西安seo教程
  • 答辩ppt模板韶关seo
  • 做网站前期预算什么是网站优化
  • 做设计用的素材下载网站有哪些搜索引擎优化的英文