24年秋招趣加笔试第二题 数组内第二大值
这题仅限C++,太久没用C++了,我是猪鼻。
Go语言版本:
直接遍历就完事了
func findSecondMax(nums []int) int {
if len(nums) < 2 {
return -1 // 数组元素少于2个时,返回-1表示没有第二大的值
}
max := nums[0]
secondMax := -1
for _, num := range nums {
if num > max {
secondMax = max // 更新第二大值
max = num // 更新最大值
} else if num > secondMax && num != max {
secondMax = num // 更新第二大值
}
}
if secondMax == -1 {
return -1 // 如果没有找到第二大值,则返回-1
}
return secondMax
}
测试用例:
func main() {
nums := []int{1, 2, 3, 4, 5}
fmt.Println("The second max value is:", findSecondMax(nums))
}
C++版本:
貌似和Go也没差
#include <iostream>
#include <vector>
int findSecondMax(vector<int>& nums) {
if (nums.size() < 2) {
return -1; // 数组元素少于2个时,返回-1表示没有第二大的值
}
int max = nums[0]; // 初始化最大值为数组的第一个元素
int secondMax = nums[0]; // 初始化第二大值为数组的第一个元素
for (int i = 1; i < nums.size(); ++i) {
if (nums[i] > max) {
secondMax = max; // 更新第二大值
max = nums[i]; // 更新最大值
} else if (nums[i] > secondMax && nums[i] != max) {
secondMax = nums[i]; // 更新第二大值
}
}
if (secondMax == max) {
return -1; // 如果没有找到第二大值,则返回-1
}
return secondMax;
}
测试用例:
int main() {
vector<int> nums = {1, 2, 3, 4, 5};
int secondMax = findSecondMax(nums);
if (secondMax != -1) {
cout << "The second max value is: " << secondMax << endl;
} else {
cout << "There is no second max value." << endl;
}
return 0;
}
评论(0)