魔法师 (@Constanline) 在 Leetcode每日一题 —— 3510. 移除最小数对使数组有序 II 中发帖
3510. 移除最小数对使数组有序 II
思路
整体思路,使用有序集合TreeSet+链表Linked List。
使用链表存储每个节点的信息(包括当前元素与下一个元素之和,当前元素值,序号,前一个节点、后一个节点),要注意最后一个元素是没有节点的。
有序集合将链表内的节点存储并根据元素之和与序号进行排序。
记录递减元素数量。
每次取出有序集合内第一个节点进行处理,将节点的前后节点更新并更新递减元素数量。
当递减元素数量变为0时,输出结果。
代码
private static class Node {
// 记录节点的序号,仅用于排序,因为如果和相同要选最左边的一个
int idx;
// 记录当前节点的值,最后一个元素的值通过 sum-val可以计算
long val;
// 记录当前节点...