954:二倍数对数组
This commit is contained in:
parent
4c4e8f6414
commit
d0a8334240
81
src/main/java/leetcode/editor/cn/ArrayOfDoubledPairs.java
Normal file
81
src/main/java/leetcode/editor/cn/ArrayOfDoubledPairs.java
Normal file
@ -0,0 +1,81 @@
|
||||
//给定一个长度为偶数的整数数组 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⁴
|
||||
// arr.length 是偶数
|
||||
// -10⁵ <= arr[i] <= 10⁵
|
||||
//
|
||||
// Related Topics 贪心 数组 哈希表 排序 👍 153 👎 0
|
||||
|
||||
package leetcode.editor.cn;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
//954:二倍数对数组
|
||||
public class ArrayOfDoubledPairs {
|
||||
public static void main(String[] args) {
|
||||
Solution solution = new ArrayOfDoubledPairs().new Solution();
|
||||
|
||||
}
|
||||
|
||||
//leetcode submit region begin(Prohibit modification and deletion)
|
||||
class Solution {
|
||||
public boolean canReorderDoubled(int[] arr) {
|
||||
//计算一对元素的个数
|
||||
int num = 0;
|
||||
//统计每个元素的个数
|
||||
HashMap<Integer, Integer> map = new HashMap<>();
|
||||
//对元素进行排序 让小的元素排在前面 这样避免了 2,4,8,1这样的情况 2和4组成了一对,导致8与1组不了对
|
||||
Arrays.sort(arr);
|
||||
for (int i : arr) {
|
||||
Integer orDefault = map.getOrDefault(i, 0);
|
||||
map.put(i, orDefault + 1);
|
||||
}
|
||||
for (int i : arr) {
|
||||
//对0特殊处理
|
||||
if (i == 0 && map.get(0) < 2) {
|
||||
continue;
|
||||
}
|
||||
//判断是否能组队成功 如果成功就把i以及2*i的数量-1
|
||||
if (map.containsKey(2 * i) && map.get(2 * i) >= 1 && map.get(i) >= 1) {
|
||||
map.put(2 * i, map.get(2 * i) - 1);
|
||||
map.put(i, map.get(i) - 1);
|
||||
num++;
|
||||
}
|
||||
}
|
||||
return num == arr.length / 2;
|
||||
}
|
||||
}
|
||||
|
||||
//leetcode submit region end(Prohibit modification and deletion)
|
||||
|
||||
}
|
@ -0,0 +1,36 @@
|
||||
<p>给定一个长度为偶数的整数数组 <code>arr</code>,只有对 <code>arr</code> 进行重组后可以满足 “对于每个 <code>0 <= i < len(arr) / 2</code>,都有 <code>arr[2 * i + 1] = 2 * arr[2 * i]</code>” 时,返回 <code>true</code>;否则,返回 <code>false</code>。</p>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p><strong>示例 1:</strong></p>
|
||||
|
||||
<pre>
|
||||
<strong>输入:</strong>arr = [3,1,3,6]
|
||||
<strong>输出:</strong>false
|
||||
</pre>
|
||||
|
||||
<p><strong>示例 2:</strong></p>
|
||||
|
||||
<pre>
|
||||
<strong>输入:</strong>arr = [2,1,2,6]
|
||||
<strong>输出:</strong>false
|
||||
</pre>
|
||||
|
||||
<p><strong>示例 3:</strong></p>
|
||||
|
||||
<pre>
|
||||
<strong>输入:</strong>arr = [4,-2,2,-4]
|
||||
<strong>输出:</strong>true
|
||||
<strong>解释:</strong>可以用 [-2,-4] 和 [2,4] 这两组组成 [-2,-4,2,4] 或是 [2,4,-2,-4]
|
||||
</pre>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p><strong>提示:</strong></p>
|
||||
|
||||
<ul>
|
||||
<li><code>0 <= arr.length <= 3 * 10<sup>4</sup></code></li>
|
||||
<li><code>arr.length</code> 是偶数</li>
|
||||
<li><code>-10<sup>5</sup> <= arr[i] <= 10<sup>5</sup></code></li>
|
||||
</ul>
|
||||
<div><div>Related Topics</div><div><li>贪心</li><li>数组</li><li>哈希表</li><li>排序</li></div></div><br><div><li>👍 153</li><li>👎 0</li></div>
|
Loading…
Reference in New Issue
Block a user