文章目录
- 刷题前唠嗑
- 题目:找出叠涂元素
- 题目描述
- 代码与解题思路
- 结语
刷题前唠嗑
LeetCode?启动!!!
新的一个月开始啦!这个月也要继续蝉联月度刷题!
题目:找出叠涂元素
题目链接:2661. 找出叠涂元素
题目描述
代码与解题思路
func firstCompleteIndex(arr []int, mat [][]int) int {mp := map[int][2]int{}n, m := len(mat), len(mat[0])for i := 0; i < n; i++ {for j := 0; j < m; j++ {// mp 存的键值对是 arr 数组的值 : 在 mat 中对应的下标mp[mat[i][j]] = [2]int{i, j} }}rowCnt, colCnt := make([]int, n), make([]int, m)for i, v := range arr {t := mp[v]rowCnt[t[0]]++colCnt[t[1]]++// 只要有一行或者一列填满了, 就直接返回 arr 下标if rowCnt[t[0]] == m || colCnt[t[1]] == n {return i}}return -1
}
读懂题意:
题目用 arr 数组中的值填充 mat
只要有一行或者一列满了就算达成题目条件,直接返回当前 arr 的下标
解题步骤:
- 用一个 map 存 arr 数组的值 : 在 mat 中对应的下标 这个键值对
- 然后用数组 rowCnt 代表一列,数组 colCnt 代表一行
- 遍历 arr,填充完一行或一列之后直接返回 arr 下标即可
举个例子:
题目给的样例 1,arr 遍历到 1 了,那 rowCnt 代表的列中的第一行填充数量+1,colCnt 代表的的一行中,第一列的填充数量+1
arr 遍历到 3 了,rowCnt 代表的列中的第二行填充数量+1,colCnt 代表的的一行中,第二列的填充数量+1
arr 遍历到 4 了,rowCnt 代表的列中的第一行填充数量+1,这一行填满了,所以直接返回 arr 的下标。
结语
周五了,嘿嘿,明天周末放假