一. 最值
最值的概念很简单,无非就是多个数中的最大值或者最小值。我们通常是将已知最大(或最小)的某个数与其它数进行比较,然后不断更新最大值(或最小值),最后得到一组数据中的最值。
例如:
#include <stdio.h>
int main(){
int nums[10] = {
0, 2, 1, 4, 5, 6, 3, 9, 5, 6};
int max = -1;
int min = 100;
for(int i = 0; i < 10; i++){
if(max < nums[i]){
max = nums[i];
}
if(min > nums[i]){
min = nums[i];
}
}
printf("max = %d\nmin = %d", max, min);
return 0;
}
二. 课后习题
第三大的数
题目链接:
414. 第三大的数
思路分析:
我们可以定义三个变量,max1,max2,max3,分别表示前三个并且不断的更新迭代,首先将最大的值给max1,如果有比max1更大的,先将max2赋给max3,然后将max1赋给max2,最后将最大的赋给max1,不断更新。
代码如下:
int thirdMax(int* nums, int numsSize){
long max[3];
max[0] = LONG_MIN;
max[1] = LONG_MIN;
max[2] = LONG_MIN;
for(int i = 0; i < numsSize; i++){
if(max[0] < nums[i]){
max[2] = max[1];
max[1] = max[0];
max[0] = nums[i];
}
else if(max[0] > nums[i] && max[1] < nums[i]){
max[2] = max[1];
max[1] = nums[i];
}
else if(max[1] > nums[i] && max[2] < nums[i]){
max[2] = nums[i];
}
}
if(max[2] == LONG_MIN)
return max[0];
return max[2];
}