给定一个长度为偶数的整数数组 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
public boolean canReorderDoubled(int[] arr) {
Arrays.sort(arr);
Queue<Integer> queue = new LinkedList<>();
for (int i : arr) {
if(queue.isEmpty()){
queue.add(i);
}else if(2*i==queue.peek()||2*queue.peek()==i){
queue.poll();
}else {
queue.add(i);
}
}
return queue.isEmpty();
}
func canReorderDoubled(arr []int) bool {
sort.Ints(arr)
queue := list.New()
for _,v := range arr {
if queue.Len()==0{
queue.PushBack(v)
}else {
temp:=queue.Front().Value.(int)
if temp==2*v||temp*2==v{
queue.Remove(queue.Front())
}else {
queue.PushBack(v)
}
}
}
return queue.Len()==0
}
|