leedcode好题总结分享(合并区间)

经典题解

1、返回一个空的二维数组

2、自定义排序,重写compare方法

针对二维数组进行排序

2.1、new Comparator<int[]>() { ... }

匿名 Comparator 类:这个部分创建了一个匿名类,实现了 Comparator接口。Comparator接口用于定义自定义的比较规则。

int[]:Comparator<int[]> 表示这个比较器用于比较 int[] 类型的数组。

2.2public int compare(int[] interval1, int[] interval2) { ... }

compare方法:Comparator 接口要求实现compare方法,用于比较两个对象。在这里,是比较两个int[] 数组,即两个区间。(与上面要对应)

1.1、return interval1[0] - interval2[0];

(如果返回正值,那么靠近return的那个值就排后面,反之排前面)

interval1[0] 和 interval2[0]:这两个表达式分别获取两个区间的起始值(即第一个元素)。

比较逻辑:interval1[0] - interval2[0] 的结果决定了排序顺序:

正值:如果interval1[0] > interval2[0],返回一个正值,表示interval1应该排在interval2之后。

零:如果 interval1[0] == interval2[0],返回 0,表示它们在排序上是等价的。

负值:如果 interval1[0] < interval2[0],返回一个负值,表示 interval1 应该排在 interval2 之前。

 3、修改利用get得到的链表元素,链表上原来的数值是会改变的

 4、将一个存储数组的链表转化为一个二维数组

New int[Merge.size()][]是生成一个新的二维数组,用来接收merge的转换

为什么必须加上这一句

类型正确性:toArray(T[] a) 确保返回的数组类型与传入的数组类型一致。在没有类型擦除的情况下,这是保证类型安全的一个重要手段。如果没有传入这个数组,toArray 方法只能返回一个 Object[],这在强类型的场景下是不合适的。

性能优化:传入一个长度适合的数组,避免了 toArray 方法内部创建新数组的开销。

总结

这行代码 return merged.toArray(new int[merged.size()][]); 通过传入一个长度与 merged 列表大小相同的 int[][] 数组,确保返回的数组类型正确,并且在性能上也是优化的。通过这种方式,可以有效地将 List<int[]> 转换为 int[][],满足方法的返回类型要求。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值