【问题标题】:Modify array values based on the duplicate occurrence根据重复出现修改数组值
【发布时间】:2023-04-04 05:16:02
【问题描述】:

我需要根据重复出现的次数对数组进行排序。对于每个重复出现,序列必须应用输出数组中指定的模式规则。

输入值:[ 1, 2, 2, 3, 4, 4, 5 ]
输出值:[ 1, 2, 2, 4, 5, 5, 7 ]

输入值:[ 1, 2, 2, 2, 3, 4, 4, 5 ]
输出值:[ 1, 2, 2, 2, 5 ,6, 6, 8 ]

输入值:[1, 1, 1, 2, 3, 4]
输出值:[1, 1, 1, 4, 5, 6]

需要根据输出中重复值的计数来动态设置输出。假设在1 之后有3 2's 那么在2 之后必须有5

可以这样想,如果在考试结果中有24th 位置,那么将没有5th 位置,因此在两个号码4 并列之后,将有5th 位置。

另一个例子是如果有34th位置,那么就没有5th6th位置,所以下一个位置将是7th位置。

【问题讨论】:

  • 我假设 [ 1, 2, 2, 2, 5 ,6, 6, 7 ] 你的意思是 [ 1, 2, 2, 2, 5 ,6, 6, 8 ] 因为第 8 个数字不应该是 7
  • 是的,这是一个错误。对于那个很抱歉。改了。

标签: javascript arrays algorithm sorting ranking


【解决方案1】:

这是使用Array#reduce的解决方案:

const rank = arr => arr.reduce((acc, cur, i) => {
  acc.push(cur === arr[i - 1] ? acc[i - 1] : i + 1);
  return acc;
}, []);

console.log(rank([1, 2, 2, 3, 4, 4, 5]));
console.log(rank([1, 2, 2, 2, 3, 4, 4, 5]));
console.log(rank([1, 1, 1, 2, 3, 4]));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-29
    • 2018-01-15
    相关资源
    最近更新 更多