网站模板下载带后台,专业做棋牌网站的,在线购物网站模板,图片外链网站大家好#xff0c;我是晴天学长#xff0c;今天用到了Java一个非常实用的类TreeSet#xff0c;能解决一些看起来棘手的问题。 1 #xff09;限制条件下元素之间的最小绝对差 2) .算法思路
初始化变量#xff1a;n为列表nums的大小。 min为整型最大值#xff0c;用于记录…大家好我是晴天学长今天用到了Java一个非常实用的类TreeSet能解决一些看起来棘手的问题。 1 限制条件下元素之间的最小绝对差 2) .算法思路
初始化变量n为列表nums的大小。 min为整型最大值用于记录最小的差的绝对值。 创建一个TreeSet类型的变量treeSet用于存储当前nums[0, i-x]范围内的元素。通过循环遍历列表nums从索引x开始迭代直到列表结束。在循环内部执行以下操作获取索引i-x处的元素并将其添加到treeSet中。获取索引i处的元素并与treeSet中的元素进行比较。 使用treeSet的ceiling方法查找大于等于当前元素的最小元素并将其赋值给celling。如果celling不为null则计算当前元素与celling的差的绝对值并更新min为较小值。 使用treeSet的floor方法查找小于等于当前元素的最大元素并将其赋值给floor。如果floor不为null则计算当前元素与floor的差的绝对值并更新min为较小值。 循环结束后返回min作为结果表示列表nums中与给定整数x的差的绝对值最小的值。 3.代码示例
class Solution {public int minAbsoluteDifference(ListInteger nums, int x) {int n nums.size();int min Integer.MAX_VALUE;//存入当前nums[0,i-x]的元素TreeSetInteger treeSet new TreeSet();for (int i x; i n ; i) {int temp nums.get(i-x);treeSet.add(temp);//比较int k nums.get(i);Integer celling treeSet.ceiling(k);if (celling! null) {min Math.min(min, Math.abs(k - celling));}Integer floor treeSet.floor(k);if (floor! null) {min Math.min(min, Math.abs(floor - k));}}return min;}4.总结
TreeSet的理解红黑树