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

徐州市水利工程建设有限公司网站合肥环保公司网站建设

徐州市水利工程建设有限公司网站,合肥环保公司网站建设,2h1g做视频网站,建设网站需要两种服务支持描述 合并K分类列表 状态#xff1a; 您有一系列 k 链接-列表 lists #xff0c;每个链接-列表按升序排序。 合并所有链接-列表为一个排序的链接-列出并返回。 例如#xff1a; Input: lists [[1, 4, 5], [1, 3, 4], [2, 6]] Output: [1, 1, 2, 3, 4, 4, 5, 6] Explanatio… 描述 合并K分类列表 状态 您有一系列 k 链接-列表 lists 每个链接-列表按升序排序。 合并所有链接-列表为一个排序的链接-列出并返回。 例如 Input: lists [[1, 4, 5], [1, 3, 4], [2, 6]] Output: [1, 1, 2, 3, 4, 4, 5, 6] Explanation: The linked-lists are: [1-4-5,1-3-4,2-6 ] merging them into one sorted list: 1-1-2-3-4-4-5-6起初这个问题有点让我感到困惑但是 NEETCODE 很有意义。 解决方案的方法是 合并排序算法 这是您从任何介绍性计算机科学课程中可能记得的最熟悉的算法之一。 现在当我们将数组作为输入作为输入时我们通常会合并排序我们将数组递归将数组分为左和右半并继续合并它们直到整个数组对整个数组进行排序。这是我们熟悉的朋友在JavaScript中的样子 function mergeSort(arr) {if (arr.length 1) {return arr;}let left arr.slice(0, Math.floor(arr.length / 2));let right arr.slice(Math.floor(arr.length / 2), arr.length);mergeSort(left);mergeSort(right);merge(left, right, arr);return arr; }function merge(left, right, arr) {let index 0;while (left.length right.length) {if (left[0] right[0]) {arr[index] left.shift();} else {arr[index] right.shift();}}while (left.length) {arr[index] left.shift();}while (right.length) {arr[index] right.shift();} }但是我们要使用的是 * merge 功能。 由于我们还使用链接列表因此看起来会有所不同。使用TypeScript看起来像这样 function merge(list1: ListNode | null, list2: ListNode | null) {let result new ListNode(0);let currentNode result;while (list1 ! null list2 ! null) {if (list1.val list2.val) {currentNode.next list1;list1 list1.next;} else {currentNode.next list2;list2 list2.next;}currentNode currentNode.next;}if (list1 ! null) {currentNode.next list1;}if (list2 ! null) {currentNode.next list2;}return result.next; }自从我们给予 k 排序列表我们将合并列表对并继续合并 lists 大于1 function mergeKLists(lists: ArrayListNode | null): ListNode | null {if (lists null || lists.length 0) {return null;}while (lists.length 1) {let mergedLists [];for (let i 0; i lists.length; i 2) {let list1 lists[i];let list2 i 1 lists.length ? lists[i 1] : null;mergedLists.push(merge(list1, list2));}lists mergedLists;} return lists[0]; };笔记如果 list2 是 null (在长度的情况下 lists 甚至不是)合并 list1 和 list2 将是 list1 。 总体而言解决方案看起来像这样 /*** Definition for singly-linked list.* class ListNode {* val: number* next: ListNode | null* constructor(val?: number, next?: ListNode | null) {* this.val (val undefined ? 0 : val)* this.next (next undefined ? null : next)* }* }*/function mergeKLists(lists: ArrayListNode | null): ListNode | null {if (lists null || lists.length 0) {return null;}while (lists.length 1) {let mergedLists [];for (let i 0; i lists.length; i 2) {let list1 lists[i];let list2 i 1 lists.length ? lists[i 1] : null;mergedLists.push(merge(list1, list2));}lists mergedLists;} return lists[0]; };function merge(list1: ListNode | null, list2: ListNode | null) {let result new ListNode(0);let currentNode result;while (list1 ! null list2 ! null) {if (list1.val list2.val) {currentNode.next list1;list1 list1.next;} else {currentNode.next list2;list2 list2.next;}currentNode currentNode.next;}if (list1 ! null) {currentNode.next list1;}if (list2 ! null) {currentNode.next list2;}return result.next; }时间和空间复杂性 时间复杂性是o(n log k)o(n\ log\ k) - 也看 NEETCODE的解释 - 如果您记得合并排序功能的时间复杂性是o(n log n)o(n\ 日志\ n) 我们通过合并操作中的每个项目但是由于每次输入都会减半我们会记录NLOG\ n次。在这里类似nn是指节点的数量而kk是列表的数量。 空间复杂性是O(k)o(k) 当我们保留临时的时kk是列表的数量 mergedLists 多变的。
http://www.zqtcl.cn/news/740248/

相关文章:

  • 网站建设规划书百度文库陕西做网站找谁
  • 昆明网站的优化网站访问跳出率
  • 四川省建设厅官方网站三内人员沈阳医大男科怎么样
  • 个性个人网站模板公司电子版简介模板
  • 网站建设百度做棋牌网站多少钱
  • 百度免费网站申请北京网站开发招聘58
  • 网站关键词排名如何提升小餐馆简易装修
  • 苏州手机网站建设多少钱牛商网上市了吗
  • 网站制作技术建设部网站监理工程师查询
  • 自助做网站嘉兴做网站优化
  • 淘宝客网站开发视频新手 网站建设 书籍
  • 在哪个网站做旅游攻略好做推广便宜的网站
  • 濮阳做网站推广做网站为什么要建站点
  • 摄影网站建设需求分析wordpress一键关注
  • 做学历的网站什么是短视频营销
  • 网站线上推广方式广告海外推广
  • 免费网站注册申请海口网站seo
  • ppt免费下载雷锋网站WordPress5分钟建站
  • 商店网站制作做签名照的网站
  • 自己制作一个网站广州自助网站制作
  • 个人网站吗wordpress超精简主题
  • 手机版免费申请微网站wordpress 跳转链接
  • 网站建设与管理好吗广州白云最新消息
  • 织梦动漫网站模版wordpress 页面文章列表
  • 东莞做网站沃德长沙市网站开发
  • 哪些网站做的最好厦门网站建设网站
  • 网站安全事件应急处置机制建设类似百度的网站
  • 内蒙古知名网站建设网站测速工具
  • 怎样建立网站赚钱怎么登录住建局官网
  • 建站自学网页转向功能网站