每天一道算法题:如何找到一个数组中的第二大的数?
javascript
function findSecondLargest(nums) {
if (nums.length < 2) {
return null; // 如果数组中元素少于2个,则没有第二大的数
}
// 初始化最大数和第二大的数
let firstLargest = -Infinity;
let secondLargest = -Infinity;
// 遍历数组
for (let num of nums) {
if (num > firstLargest) {
// 如果当前数大于最大的数
secondLargest = firstLargest;
firstLargest = num;
} else if (firstLargest > num && num > secondLargest) {
// 如果当前数小于最大的数但大于第二大的数
secondLargest = num;
}
}
// 返回第二大的数
return secondLargest !== -Infinity ? secondLargest : null;
}
// 测试代码
let nums = [3, 5, 1, 8, 7, 6];
let secondLargest = findSecondLargest(nums);
console.log(`数组中的第二大的数是: ${secondLargest}`);
这段代码定义了一个函数 findSecondLargest,它接受一个数组 nums 作为输入,并返回数组中的第二大的数。如果数组中元素少于2个,则返回 null。在函数中,使用两个变量 firstLargest 和 secondLargest 来跟踪最大的数和第二大的数。通过遍历数组并更新这两个变量,最后返回第二大的数。