LeetCode. 2740. 找出分区值

67 阅读1分钟

题目

leetcode.cn/problems/fi… 给你一个  整数数组 nums 。

将 nums 分成两个数组:nums1 和 nums2 ,并满足下述条件:

  • 数组 nums 中的每个元素都属于数组 nums1 或数组 nums2 。
  • 两个数组都 非空 。
  • 分区值 最小 。

分区值的计算方法是 |max(nums1) - min(nums2)| 。

其中,max(nums1) 表示数组 nums1 中的最大元素,min(nums2) 表示数组 nums2 中的最小元素。

返回表示分区值的整数。

思路

将数组划分为两个数组,找到最大值 - 最小值的绝对值.

本质上是找到整个数组中的两数相减的最小值,因为需要考虑结果的正负,所以排序后计算.

代码

class Solution {
    public int findValueOfPartition(int[] nums) {
        Arrays.sort(nums);
        int ans = Integer.MAX_VALUE;
        for (int i = 1; i < nums.length; i++) {
            ans = Math.min(ans, nums[i] - nums[i - 1]);
        }
        return ans;
    }
}

题解

leetcode.cn/problems/fi…