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

网站建设后需要交费吗百度官网下载电脑版

网站建设后需要交费吗,百度官网下载电脑版,孔家庄网站建设,我想做代理怎么找厂家Java-排序链表问题题目题解方法:自顶向下归并排序算法题目 给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。 示例 1: 示例 2: 示例 3: 提示: *链表中节点的数目在范围 [0, 5 * 104]…

Java-排序链表问题

  • 题目
  • 题解
    • 方法:自顶向下归并排序
  • 算法

题目

给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。
示例 1:
在这里插入图片描述
示例 2:
在这里插入图片描述
示例 3:
在这里插入图片描述
提示:

*链表中节点的数目在范围 [0, 5 * 104] 内
*-105 <= Node.val <= 105

进阶:你可以在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序吗?

题解

方法:自顶向下归并排序

对链表自顶向下归并排序的过程如下。

      *找到链表的中点,以中点为分界,将链表拆分成两个子链表。寻找链表的中点可以使用快慢指针的做法,快指针每次移动 2 步,慢指针每次移动 1 步,当快指针到达链表末尾时,慢指针指向的链表节点即为链表的中点。*对两个子链表分别排序。*将两个排序后的子链表合并,得到完整的排序后的链表。可以使用「21. 合并两个有序链表」的做法,将两个有序的子链表进行合并。*上述过程可以通过递归实现。递归的终止条件是链表的节点个数小于或等于 1,即当链表为空或者链表只包含 1 个节点时,不需要对链表进行拆分和排序。

在这里插入图片描述
通过递归实现链表归并排序,有以下两个环节:
1.分割cut环节:找到当前链表中点,并从中点将链表断开(以便在下次递归cut时,链表片段拥有正确的边界);
(1)我们使用fast,slow快慢双指针法,奇数个结点找到中点,偶数个结点找到中心左边的结点。
(2)找到结点slow后,执行slow.next=None将链表切断。
(3)递归分割时,输入当前链表左端点head和中心结点slow的下一个结点tmp(因为链表是从slow切断的)。
(4)cut 递归终止条件:当head.nextNone时,说明只有一个结点,直接返回此结点。
2.合并merge环节:将两个排序链表合并,转化为一个排序链表。
(1)双指针法合并,建立辅助ListNode h作为头部。
(2)设置两指针left,right分别指向两链表头部,比较两指针处节点值的大小,由小到大加入合并链表头部,指针交替前进,直至添加完两个链表。
(3)返回辅助listNode h作为头部的下个结点h.next.
(4)时间复杂度O(1+r),l,r分别代表两个链表长度。
(5)当题目输入的head
None时,直接返回None.

算法

 *///归并排序链表:1.从中间节点处拆分链表   2.通过双指针合并链表
class Solution {public ListNode sortList(ListNode head) {return sortList(head, null);}public ListNode sortList(ListNode head, ListNode tail) {if (head == null) {return head;}if (head.next == tail) { //sortList区间:[head,tail),说明此时区间中只有head一个元素head.next = null;return head;}//找到当前区间的中间节点ListNode slow = head, fast = head;while (fast != tail) {slow = slow.next;fast = fast.next;if (fast != tail) {fast = fast.next;}}ListNode mid = slow;//递归的拆分、合并链表ListNode list1 = sortList(head, mid);//sortList区间:[head,tail)ListNode list2 = sortList(mid, tail);ListNode sorted = merge(list1, list2);return sorted;}//类似于双指针法合并链表public ListNode merge(ListNode head1, ListNode head2) {ListNode dummyHead = new ListNode(0);ListNode temp = dummyHead, temp1 = head1, temp2 = head2;while (temp1 != null && temp2 != null) {if (temp1.val <= temp2.val) {temp.next = temp1;temp1 = temp1.next;} else {temp.next = temp2;temp2 = temp2.next;}temp = temp.next;}if (temp1 != null) {temp.next = temp1;} else if (temp2 != null) {temp.next = temp2;}return dummyHead.next;}
}
}
http://www.wooajung.com/news/32888.html

相关文章:

  • 郑州做网站公司汉狮价格2021年最为成功的营销案例
  • 企业网站建设兴田德润实惠品牌整合营销传播
  • 网站建设常用模板怎么查询搜索关键词
  • 建筑招聘网站哪个好软件培训机构
  • 能播放优酷视频的网站怎样做seo推广公司教程
  • 网站制作公司 番禺北京网站sem、seo
  • 武汉网站建设的电商热门关键词
  • wordpress api文档简阳seo排名优化课程
  • 做搬家服务网站问卷调查结果网页平台做个业务推广
  • 网站建设网上接单网址提交
  • 内蒙古城乡建设网站换名字了查询网站信息
  • 西安商城类网站制作自动交换友情链接
  • 建设信用卡分期购物网站seo技术经理
  • 网站建设主管招聘拼多多女装关键词排名
  • 做淘宝需要知道什么网站吗1688精品货源网站入口
  • 企业在哪些网站发布12345微信公众号
  • 政府网站建设 重要性可以访问境外的浏览器
  • 天津网站制作建设网络推广主要做什么
  • 中文域名网站建设seo网络推广课程
  • 做平台外卖的网站需要什么资质杭州百度
  • 是先做网站还是先备案设计网站排行榜前十名
  • b2b电子商务网站的收益模式是什么?营销策略手段有哪些
  • 一万并发量的视频网站建设百度推广云南总代理
  • 网站代码如何优化百度竞价托管哪家好
  • 网业升级坊问佛山seo
  • 网页制作全套教程视频seo网站外包公司
  • wordpress文章归档插件而的跟地seo排名点击软件
  • 在线作图网站seo优化论坛
  • 如何选择网站模板江门网站建设模板
  • 对伊利网站建设建议湖北网络推广