1. 找到一个数组中第二大的数
思路: 定义一个最大值和第二大值变量,遍历一次数组。需要注意的是最大值可能有多个。
func getMax(arr []int) int {
// 初始化
maxNum := arr[0]
secondMaxNum := arr[1]
if maxNum < secondMaxNum {
maxNum, secondMaxNum = secondMaxNum, maxNum
}
for i := 0; i < len(arr); i++ {
if maxNum < arr[i] {
secondMaxNum = maxNum
maxNum = arr[i]
} else if secondMaxNum < arr[i] && arr[i] != maxNum {
secondMaxNum = arr[i]
}
}
return secondMaxNum
}
2. 反转链表
思路: 定义一个pre空指针,遍历链表,当前节点cur指向pre。相当于把链表指针全部反向的过程。
type Node struct {
Value int
Next *Node
}
func ReserveList(head *Node) *Node {
var pre *Node
cur := head
for cur != nil {
cur, pre, cur.Next = cur.Next, cur, pre
}
return pre
}