分析:要求O(n)时间复杂度,不能用排序。可以设置两个临时变量分别保存当前最大值以及当前第二大的值,然后遍历数组,不断更新最大值和第二大的数值。

代码:

bool findSec(vector<int> num, int &secv)
{
if (num.size()<)
{
return false;
} int maxv=num[];
secv=num[];
int temp=; for (int i=;i<(int)num.size();i++)
{
if (num[i]>maxv)
{
temp=maxv;
maxv=num[i];
if (temp>secv)
{
secv=temp;
}
}
else if(num[i]<maxv&&num[i]>secv)//num[i]<maxv这条判断不可少,否则最大元素重复时返回出错;
{
secv=num[i];
} }
return true;
}

参考此文将代码稍作修改:

bool findSec(vector<int> num, int &secv)
{
if (num.size()<)
{
return false;
} int maxv=num[];
secv=num[]; if (secv>maxv)
{
swap(secv,maxv);
} for (int i=;i<(int)num.size();i++)
{
if (num[i]>maxv)
{
secv=maxv;
maxv=num[i];
}
else if (num[i]<maxv&&num[i]>secv)//num[i]<maxv这条判断不可少,否则最大元素重复时返回出错;
{
secv=num[i];
}
} return true;
}

最新文章

  1. Lightbox改造——支持滚轮缩放
  2. excel 两列比较内容是否相同
  3. javascript--Function
  4. css 射线实现方法
  5. C#整理1——进制转换
  6. meta标签有何作用?一起来学习一下
  7. windows的三种内存管理方法
  8. Android源码浅析(三)——Android AOSP 5.1.1源码的同步sync和编译make,搭建Samba服务器进行更便捷的烧录刷机
  9. Javascript高级编程学习笔记(1)—— JS简介
  10. 利用window.name+iframe跨域获取接口数据
  11. 单片机课程设计——课程设计之四位加法计算器(2)(C代码)
  12. 使用mysqldump以分隔文本格式转储数据
  13. go test :Wrong test signature
  14. openstack--部暑
  15. npm包开发(whale-makelink)
  16. public private protected extends
  17. cordova 源码分析记录
  18. go语言之进阶篇通过switch实现类型断言
  19. ODBC的基础架构
  20. MySQL学习笔记:exists和in的区别

热门文章

  1. 集训队8月2日(BFS)
  2. AcWing 224. 计算器 (BSGS算法)打卡
  3. 《一头扎进》系列之Python+Selenium框架实战篇7 - 年底升职加薪,年终奖全靠它!Merry Christmas
  4. Flask-Restless初步了解
  5. 【lua学习笔记】——在sublime中配置Lua运行环境
  6. 内核module读取进程页目录
  7. T1212:LETTERS
  8. python学习笔记:网络请求——requests模块
  9. vue-cli3.0打包完自动压缩zip
  10. Java异常抛出