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

贵阳网站建设hsyunso注册网络科技公司需要什么条件

贵阳网站建设hsyunso,注册网络科技公司需要什么条件,网站制作公司知道万维科技,全球十大建筑设计公司大家好,我是晴天学长,今天用到了Java一个非常实用的类TreeSet,能解决一些看起来棘手的问题。 1 )限制条件下元素之间的最小绝对差 2) .算法思路 初始化变量:n为列表nums的大小。 min为整型最大值,用于记录…

大家好,我是晴天学长,今天用到了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(List<Integer> nums, int x) {int n = nums.size();int min = Integer.MAX_VALUE;//存入当前nums[0,i-x]的元素TreeSet<Integer> 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的理解(红黑树)
http://www.lebaoying.cn/news/346.html

相关文章: