当前位置: 首页 > news >正文

leetcode0954. 二倍数对数组-medium

1 题目:二倍数对数组

官方标定难度:中

给定一个长度为偶数的整数数组 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 < = a r r . l e n g t h < = 3 ∗ 10 4 0 <= arr.length <= 3 * 10^4 0<=arr.length<=3104
arr.length 是偶数
− 10 5 < = a r r [ i ] < = 10 5 -10^5 <= arr[i] <= 10^5 105<=arr[i]<=105

2 solution

按照绝对值从大到小排序,如果有 2x 和 x 匹配,将 2x 数量减 1,否则 将 x 的 数量加 1,如果最终还有没有匹配的,则返回 false。

代码

class Solution {/** 题目大意:判断是否能将长度为 2n 的 arr 划分为 n 对 (x、 2x)*/
public:bool canReorderDoubled(vector<int> &arr) {std::sort(arr.begin(), arr.end(), [](int a, int b) {return abs(a) > abs(b);});unordered_map<int, int> l;for (int i: arr) {if (l[i * 2]) {l[i * 2]--;} else {l[i]++;}}for (auto x: l)if (x.second) return false;return true;}
};

结果

在这里插入图片描述

相关文章:

  • CCPC shandong 2025 G
  • 双路物理CPU机器上安装Ubuntu并部署KVM以实现系统多开
  • 第二章支线一:影之殿堂 · 阴影与过渡魔法
  • 生成式人工智能:重构软件开发的范式革命与未来生态
  • 数据的类型——认识你的数据
  • Hibernate:Java持久层框架的高效应用
  • DMBOK对比知识点对比(2)
  • 江科大UART串口通讯hal库实现
  • Python reduce()函数详解:累积计算的艺术
  • 王树森推荐系统公开课 特征交叉01:Factorized Machine (FM) 因式分解机
  • N2语法 逆接
  • C++ 中 std::wstring::c_str() 的潜在风险与安全使用指南
  • Java类中各部分内容的加载执行顺序
  • 【Python Cookbook】迭代器与生成器(四)
  • 【运维实战】定时任务-crontab命令
  • 什么是外键?它的作用与性能影响?
  • 四叉树实现四边形网格
  • MATLAB中的table数据类型:高效数据管理的利器
  • vr中风--模型部署
  • 短视频一键搬运 v1.7.1|短视频无水印下载 一键去重
  • 网站制作和收费标准/泰安seo培训
  • 网站销售系统怎么做/如何seo推广
  • 如何用运行打开wordpress/扬州整站seo
  • wordpress 企业网站模板/高平网站优化公司
  • 做网站服务器一年多少钱/合肥网站
  • 做网站一般用什么框架/英语培训机构