📅  最后修改于: 2023-12-03 15:10:47.647000             🧑  作者: Mango
假设有一个整数数组 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
和一个给定范围 [4, 7]
,请编写一个程序来查找排除给定范围内的元素后,剩下数组元素的最大值和最小值。
我们可以使用两个变量 maxVal
和 minVal
来保存当前的最大值和最小值。然后,我们可以遍历整个数组,对于每个数组元素,如果它不在给定的范围内,我们就更新 maxVal
和 minVal
。
下面是使用 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 为数组长度。
我们首先定义两个变量 maxVal
和 minVal
,分别初始化为负无穷大和正无穷大。然后,我们遍历整个数组,对于每个数组元素,如果它不在给定的范围内,我们就更新 maxVal
和 minVal
。最后,我们返回包含 maxVal
和 minVal
的数组。
在使用示例中,我们使用了一个已知的整数数组 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
和给定的范围 [4, 7]
,调用了 findMaxAndMinExcludeRange
函数,并输出了结果 [10, 1]
。这表明,在排除了 4 到 7 的元素后,该数组的最大值为 10,最小值为 1。