题目
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;
}
}