在 JavaScript 中将卡片重新排列成组
问题
我们需要编写一个JavaScript函数,它接受一个数字数组arr作为第一个参数,一个数字num作为第二个参数。
数组中的数字在[1,13]范围内,包括界限,代表扑克牌的从1开始的索引。
我们的函数应该确定是否存在将卡片重新排列成组的方法,以便每个组的大小为num,并且由num个连续的卡片组成。
例如,如果函数的输入是
输入
const arr = [1, 4, 3, 2]; const num = 2;
输出
const output = 2;
输出说明
因为卡片可以重新排列为[1,2],[3,4]
示例
以下是代码-
const arr = [1, 4, 3, 2];
const num = 2;
const canRearrange = (arr = [], num = 1) => {
const find = (map, n, num) => {
let j = 0
while(j < num) {
if(!map[n + j]) return false
else map[n + j] -= 1
j++
}
return true
}
let map = {}
arr.sort(function(a, b) {return a - b})
for(let n of arr) {
map[n] = map[n] ? map[n] + 1 : 1
}
for(let n of arr) {
if(map[n] === 0 || find(map, n, num)) continue
else return false
}
return true
};
console.log(canRearrange(arr, num));输出结果true
热门推荐
1 训练狗狗基础
2 怎么训练狗狗笑
3 怎么训练狗狗卧下
4 上海狗狗训练基地
5 训练狗狗排便
6 狗狗基础训练
8 如何训练狗狗装死
9 狗狗站姿训练
10 狗狗训练用品
11 训练狗狗吧
12 狗狗要怎么训练
13 怎么训练狗狗玩球
14 训练狗狗唤回
15 狗狗训练躺下
16 狗狗训练指令
17 狗狗的训练技巧
18 狗狗不好训练