3667. 按绝对值排序数组 🔒
题目描述
给定一个整数数组 nums
。
将 nums
中的元素按照它们的绝对值 非递减 顺序排列。
返回 任何 满足此条件的重新排列数组。
注意:整数 x
的绝对值定义为:
x
若x >= 0
-x
若x < 0
示例 1:
输入:nums = [3,-1,-4,1,5]
输出:[-1,1,3,-4,5]
解释:
nums
中元素的绝对值分别是 3,1,4,1,5。- 将它们按升序排序,得到 1,1,3,4,5。
- 这对应于
[-1, 1, 3, -4, 5]
。另一种可能的排序是[1, -1, 3, -4, 5]
。
示例 2:
输入:nums = [-100,100]
输出:[-100,100]
解释:
nums
中元素的绝对值分别是 100,100。- 将它们按升序排列,得到 100,100。
- 这对应于
[-100, 100]
。另一种可能的排序是[100, -100]
。
提示:
1 <= nums.length <= 100
-100 <= nums[i] <= 100
解法
方法一:自定义排序
我们可以使用自定义的排序函数来对数组进行排序,排序的依据是每个元素的绝对值。
时间复杂度 \(O(n \times \log n)\),空间复杂度 \(O(\log n)\)。其中 \(n\) 是数组 \(\textit{nums}\) 的长度。
1 2 3 |
|
1 2 3 4 5 6 7 8 9 |
|
1 2 3 4 5 6 7 8 9 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
1 2 3 |
|
1 2 3 4 5 6 |
|