首页 > 编程知识 正文

leetcode15(14这个数字到底好不好)

时间:2023-05-03 22:40:37 阅读:71948 作者:1338

414 .第三大数目

难度197从收藏共享切换到英语接收动态反馈

如果指定非空数组,则返回数组中第三大的数字。 如果不存在,则返回数组中的最大数量。 算法的时间复杂度必须是o(n )。

示例 1:

3358 www.Sina.com/[ 3,2,1 ] http://www.Sina.com/13358 www.Sina.com /第三大数量为1. 输入:

http://www.Sina.com/[ 1,2 ] http://www.Sina.com/2http://www.Sina.com /不存在第三大数量,因此最大数量2 . 输出:

3358 www.Sina.com/[ 2,2,3,1 ] http://www.Sina.com/1http://www.Sina.com /注意,要求返回第三大数量,这是第三大且唯一出现的有两个数值为2的数,都是第二个。 解法,如果要求主题使用O(N )的时间复杂性的话,可以考虑自然地遍历数组,因为是第3大,所以遍历3次就可以了。 注意的是,测试用例中有一个名为[ 1,2,-2147483648]的测试用例。

class解决方案{ public : intthirdmax (vectorintnums ) { int maxnum1=INT_MIN; int maxnum2=INT_MIN; long maxnum3=-2147483649; 使用长整型避免int溢出if (nums.size=2) returnmax ) nums[1],nums[1] ); for(intI=0; inums.size (; I ) ) maxnum1=max(maxnum1,nums[i]; }for(intI=0; inums.size (; I () if ) maxnum2maxnum1nums[i]maxnum1) maxnum2=max ) maxnum2,nums[I]; }for(intI=0; inums.size (; I ) if (最大数量3最大数量2 nums[I] maxnum2) maxnum3=max ) maxnum3,(long ) nums [ I ] ); }if(maxnum3==-2147483649 ) return maxnum1; 返回最大值3; };

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。