📌  相关文章
📜  找到一个数组 B,其中 B 中的至少 arr[i] 个元素不等于 B[i](1)

📅  最后修改于: 2023-12-03 15:25:50.011000             🧑  作者: Mango

在数组中找到至少 arr[i] 个元素与数组的对应元素不同的数组 B

在程序设计中,我们经常需要根据某种规则,根据已有的数据,生成一个新的数组。有时我们需要生成一个与原数组不同的数组,本文将介绍如何在数组中找到至少 arr[i] 个元素与数组的对应元素不同的新数组 B。

方法

我们可以通过遍历原数组 arr,将每个元素与一个随机数进行比较。如果两者相等,则将 B 数组对应位置的元素替换为一个与随机数不相等的随机数。重复此步骤,直到 B 中的元素个数满足条件。

实现该方法的伪代码如下:

function generateArray(arr) {
  let B = []
  for (let i = 0; i < arr.length; i++) {
    let num = 0
    while (num < arr[i]) {
      let randomNum = Math.floor(Math.random() * 100)
      if (randomNum === arr[i]) {
        randomNum = Math.floor(Math.random() * 100)
      }
      B[i] = randomNum
      num++
    }
  }
  return B
}
示例

假设原数组 arr 为 [2, 4, 1, 5],则运行 generateArray(arr) 后,可以得到一个符合要求的新数组 B,例如 [3, 89, 0, 97]。其中,B[0]、B[1]、B[2] 的值与原数组 arr 对应位置的元素不同,且 B 中至少有 arr[i] 个元素不等于 B[i]。

总结

通过比较原数组中的元素与随机数,我们可以生成一个与原数组不同的数组 B。这个方法简单有效,在面对需要生成一个新数组,且每个元素需要与原数组不同的情况下,可以作为一个实用的函数。