当前位置: 面试刷题>> 第2章提高200例 (经典算法题500道)
由于原题目描述不完整,我将假设一个常见的算法题场景来补全题目,并给出PHP、Python、JavaScript三种语言的示例代码。这个假设的场景是“寻找数组中的第二大元素”。
### 题目描述
给定一个非空整数数组,编写一个函数来查找其中第二大的元素。注意,数组中可能包含重复的元素。
### 示例
```
输入: [1, 2, 3, 4, 3]
输出: 3
输入: [1, 2]
输出: 1
(如果数组中没有第二大的元素,则返回数组中最大的元素)
```
### PHP 示例代码
```php
function findSecondLargest($nums) {
$firstMax = PHP_INT_MIN;
$secondMax = PHP_INT_MIN;
foreach ($nums as $num) {
if ($num > $firstMax) {
$secondMax = $firstMax;
$firstMax = $num;
} elseif ($num > $secondMax && $num !== $firstMax) {
$secondMax = $num;
}
}
// 如果没有第二大的元素,返回最大的元素
return $firstMax == $secondMax ? $firstMax : $secondMax;
}
// 测试
echo findSecondLargest([1, 2, 3, 4, 3]); // 输出 3
echo "\n";
echo findSecondLargest([1, 2]); // 输出 1
```
### Python 示例代码
```python
def find_second_largest(nums):
first_max = float('-inf')
second_max = float('-inf')
for num in nums:
if num > first_max:
second_max, first_max = first_max, num
elif first_max > num > second_max:
second_max = num
# 如果没有第二大的元素,返回最大的元素
return second_max if second_max != float('-inf') else first_max
# 测试
print(find_second_largest([1, 2, 3, 4, 3])) # 输出 3
print(find_second_largest([1, 2])) # 输出 1
```
### JavaScript 示例代码
```javascript
function findSecondLargest(nums) {
let firstMax = -Infinity;
let secondMax = -Infinity;
for (let num of nums) {
if (num > firstMax) {
[secondMax, firstMax] = [firstMax, num];
} else if (num < firstMax && num > secondMax) {
secondMax = num;
}
}
// 如果没有第二大的元素,返回最大的元素
return secondMax === -Infinity ? firstMax : secondMax;
}
// 测试
console.log(findSecondLargest([1, 2, 3, 4, 3])); // 输出 3
console.log(findSecondLargest([1, 2])); // 输出 1
```
### 码小课
码小课网站中有更多关于算法和数据结构的精彩内容,涵盖了从基础到进阶的各类问题,欢迎大家前往学习,不断提升自己的编程技能。