爪哇 程序查找数组中的第二大数字
如果您想练习数据结构和算法程序,可以通过 数据结构和算法面试题 .
在这篇文章中,我们将看到如何在数组中查找第二大数字。
问题:
给定一个未排序的数组,您需要在 数组 在 o(n)
时间复杂度.
例如:
数组中的第二大元素:6
解:
您可以对数组进行排序,然后返回数组中的倒数第二个元素,但这将在 o( 登陆 ) 时间,
算法:
- 用可能的最小值初始化high和secondHighest。
- 遍历数组。
- 如果当前元素大于最高元素
- 分配secondHighest =最高
- 分配最高= currentElement
- 否则,如果当前元素大于secondHighest
- 分配secondHighest =当前元素。
爪哇 程序查找数组中的第二大数字:
FindSecondLargestMain.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
包 组织 . Arpit . 爪哇 2blog ; 上市 类 FindSecondLargestMain { 上市 静态的 虚空 主要 ( 串 args []) { 整型 [] arr1={7,5,6,1,4,2}; 整型 第二高=findSecondLargestNumberInTheArray(arr1); 系统 . 出 . 打印 (“数组中的第二大元素:”+ 第二高); } 上市 静态的 整型 findSecondLargestNumberInTheArray( 整型 数组 []) { //将它们初始化为可能的最小值 整型 最高 = 整数 . MIN_VALUE ; 整型 第二高 = 整数 . MIN_VALUE ; //遍历数组 对于 ( 整型 i = 0; i < 数组 . 长度 ; i ++ ) { //如果当前元素大于最高元素 如果 ( 数组 [i] > 最高 ) { //将第二高的元素分配给最高的元素 第二高 = 最高 ; //最高元素到当前元素 最高 = 数组 [i]; } 其他 如果 ( 数组 [i] > 第二高 && 数组 [i] != 最高 ) //仅替换第二高的 第二高 = 数组 [i]; } //退出循环后,secondHighest现在代表第二个 //数组中的最大值 返回 第二高; } } |
当您运行上述程序时,将获得以下输出:
那’关于如何在数组中查找第二大数字的所有内容。
Comments
我爱你的博客。多谢你。准备面试的最佳网站之一。
嗨,如果一个数组包含重复且恰巧也是最大的元素,则此代码将失败。
示例:arr [] = {7,8,8,1,4,2}
错过了边缘情况!感谢您提出来。固定它。
如果我们更改else id条件代码,在所有情况下都可以正常工作,
否则,如果(array [i]> 第二高 &&array [i]!=最高){
第二高 = 数组 [i];
}