5832. 构造元素不等于两相邻元素平均值的数组
数据量 1e5
,暴力啥的应该不好使
思路如下:
- 先排序 nums;
- 先按排序后的 nums 顺序,依次填空从前向后填补新数组 res 的奇数位置;
- 再按排序后的 nums 顺序,依次填空从前向后填补新数组 res 的偶数位置;
这样可以保证 nums[i] 左右元素都比它大,那么 nums[i] 则一定不是其相邻元素的平均值(只有一小一大才可能是 avg)
class Solution {
public int[] rearrangeArray(int[] nums) {
Arrays.sort(nums); // 排序
int[] res = new int[nums.length];
int index = 0;
// 保证 nums[i] 左右元素都比它大
for (int i = 0; i < nums.length; i += 2) {
res[i] = nums[index++]; // 先按顺序填空 奇数位置
}
for (int i = 1; i < nums.length; i += 2) {
res[i] = nums[index++]; // 再按顺序填空 偶数位置
}
return res;
}
}