funcfindLHS(nums []int)int { mapList := make(map[int]int) var res int for _, num := range nums { mapList[num] ++ if _, ok := mapList[num-1]; ok && res < (mapList[num-1] + mapList[num]){ res = mapList[num-1] + mapList[num] } if _, ok := mapList[num+1]; ok && res < (mapList[num+1] + mapList[num]){ res = mapList[num+1] + mapList[num] } } return res }
funcmaxCount(m int, n int, ops [][]int)int { arr := make([][]int, m) for i := range arr { arr[i] = make([]int, n) } for _, op := range ops { for i := 0; i < op[0]; i++ { for j := 0; j < op[1]; j++ { arr[i][j]++ } } } max := arr[0][0] var count int for _, ints := range arr { for _, v := range ints { if v == max { count ++ } } } return count }
funcfindRestaurant(list1 []string, list2 []string) []string { var ( res = []string{} mapList = make(map[string]int) minIndex = math.MaxInt32 ) for i, s := range list1 { mapList[s] = i } for i, s := range list2 { if v, ok := mapList[s]; ok { sum := v + i if sum == minIndex { res = append(res, s) } if sum < minIndex { minIndex = sum res = []string{s}
} } } return res }
645. 错误的集合
集合 s 包含从 1 到 n 的整数。不幸的是,因为数据错误,导致集合里面某一个数字复制了成了集合里面的另外一个数字的值,导致集合 丢失了一个数字 并且 有一个数字重复 。
funcfindRestaurant(list1 []string, list2 []string) []string { var ( res = []string{} mapList = make(map[string]int) minIndex = math.MaxInt32 ) for i, s := range list1 { mapList[s] = i } for i, s := range list2 { if v, ok := mapList[s]; ok { sum := v + i if sum == minIndex { res = append(res, s) } if sum < minIndex { minIndex = sum res = []string{s}
} } } return res }
解题思路
遍历数组,用哈希表记录数字出现的次数,再遍历1到n,出现2次的就是重复的,出现0次的就是丢失的
示例代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
funcfindErrorNums(nums []int) []int { res := make([]int, 2) m := make(map[int]int, 0) for _, num := range nums { m[num] ++ } for i := 1; i <= len(nums); i++ { if v := m[i]; v == 2 { res[0] = i }elseif v == 0 { res[1] = i } } return res }