leetcode 954. Array of Doubled Pairs | 954. 二倍数对数组(Java)
题目
https://leetcode.com/problems/array-of-doubled-pairs/
题解
对于每一个数n来说,它要么和 n / 2
凑一对,要么和 n * 2
凑一对。
怎么在不回溯的情况下,知道它应该和哪个凑成一对呢?
当你选的n是剩余数组中"绝对值最小的数"时候,n / 2
是不存在的,它就只能和 n * 2
凑一对了。
要找到"绝对值最小的数",不可避免的要排序…
class Solution {public boolean canReorderDoubled(int[] arr) {Arrays.sort(arr);HashMap<Integer, Integer> map = new HashMap<>();int p = 0; // 最后一个非正数位置for (int i = 0; i < arr.length; i++) {if (!map.containsKey(arr[i])) map.put(arr[i], 0);map.put(arr[i], map.get(arr[i]) + 1);if (arr[i] <= 0) p = i;}// 处理非正数for (int i = p; i >= 0; i--) {if (failPair(arr, map, i)) return false;}// 处理正数for (int i = p+1; i <arr.length; i++) {if (failPair(arr, map, i)) return false;}return true;}public boolean failPair(int[] arr, HashMap<Integer, Integer> map, int i) {if (map.containsKey(arr[i])) {int c1 = map.get(arr[i]) - 1;if (c1 == 0) map.remove(arr[i]);else map.put(arr[i], c1);if (map.containsKey(2 * arr[i])) { // 匹配一对int c2 = map.get(2 * arr[i]) - 1;if (c2 == 0) map.remove(2 * arr[i]);else map.put(2 * arr[i], c2);} else { // 匹配失败return true;}}return false;}
}
leetcode 954. Array of Doubled Pairs | 954. 二倍数对数组(Java)相关推荐
- 【LeetCode】954. Array of Doubled Pairs 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 日期 题目地址:https://leetcode.c ...
- leetcode:954. 二倍数对数组
954. 二倍数对数组 来源:力扣(LeetCode) 链接: https://leetcode-cn.com/problems/array-of-doubled-pairs/ 给定一个长度为偶数的整 ...
- leetcode-954. 二倍数对数组
leetcode-954. 二倍数对数组 题源 知识点 思路 代码 python javascript java C 题源 954. 二倍数对数组 知识点 哈希表 对于哈希表,我有了新认识,以前我感觉 ...
- 《LeetCode刷题》954. 二倍数对数组(java篇)
题目描述: 给定一个长度为偶数的整数数组 arr,只有对 arr 进行重组后可以满足 "对于每个 0 <= i < len(arr) / 2,都有 arr[2 * i + 1] ...
- LeetCode 954. 二倍数对数组(map计数)
文章目录 1. 题目 2. 解题 1. 题目 给定一个长度为偶数的整数数组 A,只有对 A 进行重组后可以满足 对于每个 0 <= i < len(A) / 2,都有 A[2 * i + ...
- LeetCode 954. 二倍数对数组
题目链接: 力扣https://leetcode-cn.com/problems/array-of-doubled-pairs/ [分析]通过哈希表和排序来解决这个问题,先统计0的个数,因为0这个元素 ...
- Javascript(JS) leetcode 954. 二倍数对数组
给定一个长度为偶数的整数数组 arr,只有对 arr 进行重组后可以满足 "对于每个 0 <= i < len(arr) / 2,都有 arr[2 * i + 1] = 2 * ...
- leetcode954. Array of Doubled Pairs
题目链接 题目:给定一个长度为偶数的整数数组 A,只有对 A 进行重组后可以满足 "对于每个 0 <= i < len(A) / 2,都有 A[2 * i + 1] = 2 * ...
- LeetCode中等题之二倍数对数组
题目 给定一个长度为偶数的整数数组 arr,只有对 arr 进行重组后可以满足 "对于每个 0 <= i < len(arr) / 2,都有 arr[2 * i + 1] = 2 ...
最新文章
- linux内核 asmlinkage宏
- OpenCV图像处理——对比两张图像差异的位置并标记
- 图书资料管理课程设计(附源码和连接)
- Spring思维导图,让Spring不再难懂(cache篇)
- 报错,atmSecondMenu.vue?bcc9:231 Uncaught (in promise) TypeError: Cannot read property ‘length‘ of null
- 【Java】Java 对象头 真的是 32位 吗?
- python秒表代码_斌哥教你自制千分秒表(键盘控制)
- 查看 linux系统版本,内核,CPU,MEM,位数的相关命令(实验)
- IIS7中添加html对! #include 的引用
- 【C语言】08-数组
- 统计通话次数和时间的软件_通话时间统计app下载-通话时间统计安卓版 v2.2.2 - 安下载...
- 软件测试基础知识总结
- 【最详细】最全java面试题及答案(210道)
- matlab读取本地图片,matlab读取图片
- 【antdesign】表单布局和校验
- 广州高清卫星地图 用百度卫星地图服务器下载 含标签、道路数据叠加 可商用
- 请将磁盘插入‘‘U盘(F:)‘‘的解决方法
- airsim--client
- 【充电站】_世俗智慧_哲学智慧_.
- 王兄弟跟妹纸分享逆袭秘籍,无关风月!
热门文章
- 二分图最大权匹配算法KM
- kafka 丢弃数据_kafka 生产者和幂等
- c# Task.Factory.StartNew 传参数_C#/C++混合编程一二事
- 数据分析与挖掘-python常用数据预处理函数
- lpt算法c语言程序,LPT算法的性能(近似).ppt
- PAT ---- 1029. 旧键盘(20)
- POJ2528 线段树+离散化+hash(成段更新)
- ZooKeeper ZAB协议:崩溃恢复、消息广播
- C++ 特殊类设计:只能在堆、栈上创建的类、无法继承的类、无法拷贝的类、只能创建一个对象的类
- 第41讲:Scrapy框架的介绍