首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >排序两个数组

排序两个数组
EN

Stack Overflow用户
提问于 2022-05-27 08:12:52
回答 2查看 62关注 0票数 -3

我正试图解决一个算法问题。这个问题看起来很有挑战性。但是我认为可以通过缩短阵列来解决..。

问题描述

任务。在一条线上给你一组点,在一条线上给一组段。目标是为每个点计算包含此点的段数。

输入格式。第一行包含两个非负整数s和p,分别定义一行上的段数和点数。下一行包含两个整数ai,bi定义I-段ai,bi.下一行包含定义点x1,x2,的p整数。。。、xp.

约束。1≤,≤50000;−108≤≤≤108用于所有0≤<;−108≤≤108,用于所有0≤<。

输出格式.输出p非负整数k0,k1 .。。,k(p-1),其中ki是包含xi的片段数。

样本1。 输入: 2 3 0 5 7 10 1 6 11 输出:1 0 0

在这里,我们有两个部分和三个点。第一点仅在第一部分,而其余两点不在所有给定部分之外。

我想通过使用的JS来创建一个函数,通过比较数组的第一项来缩短数组的项,并在最佳时间复杂度中返回该shortedArray。我怎么能这么做?

示例:

代码语言:javascript
运行
复制
let segments = [[ [ 1, 'L' ], [ 2, 'R' ] ], [ [ 0, 'L' ], [ 15, 'R' ] ], [ [ 7, 'L' ], [ 10, 'R' ] ] ] ;
let points = [ [ 1, 'P' ], [ 6, 'P' ], [ 11, 'P' ] ] ;

newArray应该是:

代码语言:javascript
运行
复制
shortedArray = [[0,'L'],[1,'L'],[1,'P'],[2,'R'],[6,'P'],[7,'L'],[10,'R'],[11,'P'],[15,'R']] ;

我已经从数组中删除了小苞片,并使它们变得基本。

示例

我不知道如何将数组转换为下面的

代码语言:javascript
运行
复制
segments = [ [ 0, 'L' ], [ 15, 'R' ], [  7, 'L' ], [ 10, 'R' ] ]  ;
EN

回答 2

Stack Overflow用户

发布于 2022-05-27 08:25:21

您可以使用flat()sort()的组合对其进行归档。您必须使用平面,因为您的第一个数组有另一个结构作为第二个。

代码语言:javascript
运行
复制
const segments = [ [ [ 0, 'L' ], [ 15, 'R' ] ], [ [ 7, 'L' ], [ 10, 'R' ] ] ] ;
const points = [ [ 1, 'P' ], [ 6, 'P' ], [ 11, 'P' ] ];

const a = [...segments.flat(),...points].sort((a, b) => a[0] - b[0])

console.log(a)

flat() 对象/阵列/平面

sort() 对象/数组/排序

票数 1
EN

Stack Overflow用户

发布于 2022-05-27 08:58:05

使用Array.prototype.concat将数组连接到一个数组中,然后根据其第一个值对该数组进行排序。

代码语言:javascript
运行
复制
const 
  segments = [ [ [ 0, 'L' ], [ 15, 'R' ] ], [ [ 7, 'L' ], [ 10, 'R' ] ] ],
  points = [ [ 1, 'P' ], [ 6, 'P' ], [ 11, 'P' ] ],
  result = [].concat(...segments, points).sort(([a], [b]) => a - b);

console.log(result);

其他相关文件:

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72402398

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档