给定一个长度为偶数的整数数组 arr
,只有对 arr
进行重组后可以满足 “对于每个 0 <= i < len(arr) / 2
,都有 arr[2 * i + 1] = 2 * arr[2 * i]
” 时,返回 true
;否则,返回 false
。
示例 1:
输入:arr = [3,1,3,6] 输出:false
示例 2:
输入:arr = [2,1,2,6] 输出:false
示例 3:
输入:arr = [4,-2,2,-4] 输出:true 解释:可以用 [-2,-4] 和 [2,4] 这两组组成 [-2,-4,2,4] 或是 [2,4,-2,-4]
提示:
0 <= arr.length <= 3 * 104
arr.length
是偶数-105 <= arr[i] <= 105
思路:
1、先对数组降序排序
2、遍历数组并找寻满足条件的另一个数是否存在
3、存在并且两个数不是同一个位置,则符合条件,放入结果数组
4、把两个位置上的数置为null,防止重复访问
5、结果数组长度和原数组长度相同返回true
时间复杂度:O(nlogn)
空间复杂度:O(n)