1. 找到一个数组中第二大的数
思路: 定义一个最大值和第二大值变量,遍历一次数组。需要注意的是最大值可能有多个。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | 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。相当于把链表指针全部反向的过程。
1 2 3 4 5 6 7 8 9 10 11 12 13 | 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 } |