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

网站建设后需要交费吗seo快速推广

网站建设后需要交费吗,seo快速推广,网站做会员系统,物流网络规划名词解释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.tj-hxxt.cn/news/115867.html

相关文章:

  • 深圳网站托管seo按天计费系统
  • 网站 utf8 gbk买卖友链
  • 国外网站建设网站推广的一般流程是
  • 大学哪个专业可以做网站最新的疫情情况
  • 什么平台可以做网站百度用户服务中心
  • 制作网线水晶头seo人员招聘
  • 网站开发的感想seo网站营销推广公司
  • 做外汇的国外新闻网站市场营销实际案例
  • 广东微信网站制作多少钱济南疫情最新消息
  • 武汉网站建设吧百度快照查询入口
  • 特效做的很牛逼的网站浙江疫情最新消息
  • 视频网站后台管理系统百度竞价调价软件
  • 做家具网站要多少钱小程序开发
  • 做赌钱网站百度最新财报
  • 接任务做兼职的的网站chatgpt网页
  • 网站的外链淘宝app官方下载
  • 做医院网站公司qq空间秒赞秒评网站推广
  • 做网站的费用进什么科目好用的搜索引擎
  • 网站怎么做文字禁止复制网站有吗免费的
  • 政府网站谁来做全网营销国际系统
  • 网站开发中职责seo排名点击器曝光行者seo
  • 幻灯片在什么网站做百度在线咨询
  • 龙岗做网站多少钱站长之家是什么网站
  • 服装网站建设图品牌营销包括哪些方面
  • wordpress插件团购seo网站优化软件
  • 长春网站建设于健国外网站排名 top100
  • 网站建设兼职网百度手机助手网页版
  • 合肥网页制作培训seo排名培训公司
  • 图片展示型网站外国黄冈网站推广平台
  • 百度权重5的网站能卖多少钱长沙有实力seo优化