题目:第二大数
思路分析:
这道题不好想的地方是时间复杂度。
刚开始想在两重循环内部用sort排序的,结果超时了。
采取的解决办法是:迭代求第二大的值。
AC代码考场版:
#include<iostream>
using namespace std;
const int N = 1e4+20;
int nums[N];
long long sum;
int main(void)
{
int n;
cin>> n;
for(int i = 1; i <= n; i++)
{
cin>> nums[i];
}
for(int i = 1; i <= n-1; i++)
{
int temp, max = nums[i];
int sec = 0;
for(int j = i+1; j <= n; j++)
{
//怎么找第二大的数————迭代
if(nums[j] > max)
{
sec = max;
max = nums[j];
}
else if(nums[j] > sec) // sec <= nums[j] <= max
sec = nums[j];
sum += sec;
}
}
cout<< sum << endl;
return 0;
}
欢迎交流~ 祝大家天天快乐AC~