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

教育网站建设需求文档大庆免费网站建设公司

教育网站建设需求文档,大庆免费网站建设公司,黄冈网站制作公司,旅游网页设计图片素材148. 排序链表 给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 这题能通过但是投机取巧了,一般应该不能这样做,直接把节点里的值拿出来,排序后再更新每个节点的值。 /*** Definition for singly-linked list.* p…
148. 排序链表
给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 

这题能通过但是投机取巧了,一般应该不能这样做,直接把节点里的值拿出来,排序后再更新每个节点的值。

/*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val = val; }* ListNode(int val, ListNode next) { this.val = val; this.next = next; }* }*/
class Solution {public ListNode sortList(ListNode head) {List<Integer> num = new ArrayList<>();ListNode p = head;while (p != null) {num.add(p.val);p = p.next;}Collections.sort(num);p = head;int i = 0;while (p != null) {p.val = num.get(i);p=p.next;i++;}return head;}
}

官方解法太长了,去网上找了另外一个解法。就是归并排序的思想。实际上执行的时间和空间还不如投机取巧的解法,但是这种应该可以面试的时候用
像这种归并排序的递归,连续三个方法都在递归,不知道每次递归的参数是什么,放编译器执行以下真正的归并排序代码,去感受以下迭代是怎么走的。(代码附在最后)

解法来自
https://zhuanlan.zhihu.com/p/434174362

class Solution {public ListNode sortList(ListNode head) {//如果链表为空,或者只有一个节点,直接返回即可,不用排序if (head == null || head.next == null)return head;//快慢指针移动,以寻找到中间节点ListNode slow = head;ListNode fast = head;while(fast.next!=null && fast.next.next !=null){fast = fast.next.next;slow = slow.next;}//找到中间节点,slow节点的next指针,指向midListNode mid = slow.next;//切断链表slow.next = null;//排序左子链表ListNode left = sortList(head);//排序左子链表ListNode right = sortList(mid);//合并链表return merge(left,right);}public ListNode merge(ListNode left, ListNode right) {ListNode head = new ListNode(0);ListNode temp = head;while (left != null && right != null) {if (left.val <= right.val) {temp.next = left;left = left.next;} else {temp.next = right;right = right.next;}temp = temp.next;}if (left != null) {temp.next = left;} else if (right != null) {temp.next = right;}return head.next;}
}

归并排序

public class MergeSort {public static void mergeSort(int[] arr) {if (arr == null || arr.length <= 1) {return;}sort(arr, 0, arr.length - 1);}private static void sort(int[] arr, int left, int right) {if (left >= right) {return;}int mid = left + (right - left) / 2;sort(arr, left, mid);sort(arr, mid + 1, right);merge(arr, left, mid, right);}private static void merge(int[] arr, int left, int mid, int right) {int[] temp = new int[right - left + 1];int i = left, j = mid + 1, k = 0;while (i <= mid && j <= right) {temp[k++] = arr[i] <= arr[j] ? arr[i++] : arr[j++];}while (i <= mid) {temp[k++] = arr[i++];}while (j <= right) {temp[k++] = arr[j++];}for (i = 0; i < k; i++) {arr[left + i] = temp[i];}}// 测试归并排序public static void main(String[] args) {int[] arr = {4, 3, 2, 10, 12, 1, 5, 6};mergeSort(arr);for (int num : arr) {System.out.print(num + " ");}}
}
http://www.yayakq.cn/news/158698/

相关文章:

  • 用手机做网站视频广告推广平台赚取佣金
  • 设计网站专题页包括那些项目做网站的背景照
  • 深圳网页设计兴田德润专业电商网站seo优化目标分解
  • 深圳企业网站公司中国建设工程信息网官网查询
  • 企业网站的栏目设置江西网站搜索引擎优化
  • 1.86神华网站两学一做虚拟主机管理系统源码
  • 网站建设公司怎么运营wordpress怎样添加模板
  • 网站建设的词58同城赶集网
  • 襄樊网站网站建设一级a做爰片不卡免费网站
  • 有没有教做网站的app大连网站开发企业
  • 鹤壁网站推广中国互联网站建设中心建站中心
  • 网站建设销售提点20个点商洛网站开发公司
  • 网站建设应该注意哪些问题徐州网站开发多少钱
  • 三分钟做网站低代码快速开发平台
  • 创同盟网站企业局域网
  • 大型的PC网站适合vue做吗属于教育主管部门建设的专题资源网站是
  • 谷歌云做网站服务器运营小程序的成本有哪些
  • seo网站源码注册域名邮箱怎么弄
  • 马鞍山网站建设公司排名广州微信网站建设费用
  • 中国手工活加工官方网站女儿玩手机到深夜23点怎么办
  • Soho外贸常用网站合肥网站建设渠道
  • 网站维护包括哪些工作如何免费注册淘宝店铺
  • 陕西省建设厅官方网站网站建设运营案例
  • 国外网站翻墙怎么做友链交换
  • 收录查询站长工具做放单主持的网站
  • 电子商务网站开发项目策划书公司网站怎么做关键字
  • 杭州网站建设公司导航百度推广官方网站登录入口
  • wordpress做的著名网站电视台网站策划书
  • 专做PPP项目网站做网站必须在工信部备案吗
  • 心理咨询网站建设论文学计算机工资一月多少