题目概述
给定一个长度为偶数的整数数组 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 * 10^4
- arr.length 是偶数
- -10^5 <= arr[i] <= 10^5
题目来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/array-of-doubled-pairs
解题分析
方法:哈希表+排序
根据题意可以知道,如果给定数组就为二倍数对数组,那么它一定存在两倍于最小值的值,且它的数量一定大于等于最小值的数量,因此我们可以创建哈希表来记录每个数出现的次数,然后我们对键进行排序,按照绝对值顺序进行排序,最后遍历排序后的键