**题目:**实现一个函数,找出一个数组中第二大的数字,并返回该数字。
要求:
-
输入参数为一个数字数组。
-
返回值为数组中第二大的数字。
示例:
答案一
function findSecondLargest(arr) {
if (arr.length < 2) {
return null; // 数组中元素个数小于2,无法找到第二大的数字
}
var largest = arr[0];
var secondLargest = -Infinity;
for (var i = 1; i < arr.length; i++) {
if (arr[i] > largest) {
secondLargest = largest;
largest = arr[i];
} else if (arr[i] > secondLargest && arr[i] < largest) {
secondLargest = arr[i];
}
}
if (secondLargest === -Infinity) {
return null; // 无法找到第二大的数字
} return secondLargest;
}
这个问题主要考察了对数组和逻辑判断的处理能力。在面试过程中,你可以要求面试者解释他们的解决方案,并讨论可能的优化方法。
答案二
function findSecondLargest(arr) {
if (arr.length < 2) {
return null; // 数组中元素个数小于2,无法找到第二大的数字
} // 首先对数组进行排序
arr.sort(function(a, b) {
return b - a; // 降序排列
}); // 返回排序后的第二个元素
return arr[1];
}
这种方法首先对数组进行降序排序,然后返回排序后的第二个元素,即第二大的数字。在面试过程中,你可以和面试者讨论不同解决方案的优缺点,以及它们的时间复杂度和空间复杂度。