首页 > 代码库 > 算法:寻找数组的第二大的元素(不排序、只循环一次)
算法:寻找数组的第二大的元素(不排序、只循环一次)
该算法的原理是,在遍历数组的时,始终记录当前最大的元素和第二大的元素。示例代码:
package demo01 import ( "fmt" ) func NumberTestBase() { fmt.Println("This is NumberTestBase") nums := []int{12, 24, 2, 5, 13, 8, 7} fmt.Println("nums:", nums) secondMax := getSecondMaxNum(nums) fmt.Println("secondMax=", secondMax) } func getSecondMaxNum(nums []int) int { length := len(nums) if length == 0 { panic("Slice nums cannot be 0-size.") } if length == 1 { return nums[0] } var max, secondMax int if nums[0] > nums[1] { max = nums[0] secondMax = nums[1] } else { max = nums[1] secondMax = nums[0] } for i := 2; i < len(nums); i++ { if nums[i] > secondMax { if nums[i] <= max { secondMax = nums[i] } else { secondMax, max = max, nums[i] } } } return secondMax }
算法:寻找数组的第二大的元素(不排序、只循环一次)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。