📌  相关文章
📜  查询以查找排除给定范围内的元素的最大和最小数组元素(1)

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

查询以查找排除给定范围内的元素的最大和最小数组元素

假设有一个整数数组 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 和一个给定范围 [4, 7],请编写一个程序来查找排除给定范围内的元素后,剩下数组元素的最大值和最小值。

思路

我们可以使用两个变量 maxValminVal 来保存当前的最大值和最小值。然后,我们可以遍历整个数组,对于每个数组元素,如果它不在给定的范围内,我们就更新 maxValminVal

代码实现

下面是使用 JavaScript 实现该算法的代码:

/**
 * 查找排除给定范围内的元素后,数组中的最大值和最小值
 * @param {*} arr 整数数组
 * @param {*} range 给定范围
 * @returns {Array} 包含最大和最小值的数组
 */
function findMaxAndMinExcludeRange(arr, range) {
  let maxVal = -Infinity;
  let minVal = Infinity;
  
  for(let i = 0; i < arr.length; i++) {
    if(arr[i] < range[0] || arr[i] > range[1]) {
      maxVal = Math.max(maxVal, arr[i]);
      minVal = Math.min(minVal, arr[i]);
    }
  }

  return [maxVal, minVal];
}

// 使用示例
const arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
const range = [4, 7];
console.log(findMaxAndMinExcludeRange(arr, range)); // [10, 1]
代码说明

该算法的时间复杂度为 O(n),其中 n 为数组长度。

我们首先定义两个变量 maxValminVal,分别初始化为负无穷大和正无穷大。然后,我们遍历整个数组,对于每个数组元素,如果它不在给定的范围内,我们就更新 maxValminVal。最后,我们返回包含 maxValminVal 的数组。

在使用示例中,我们使用了一个已知的整数数组 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 和给定的范围 [4, 7],调用了 findMaxAndMinExcludeRange 函数,并输出了结果 [10, 1]。这表明,在排除了 4 到 7 的元素后,该数组的最大值为 10,最小值为 1。