力扣每日一题 5/31

简介: 力扣每日一题 5/31

2965.找出缺失和重复的数字[简单]

题目:

给你一个下标从 0 开始的二维整数矩阵 grid,大小为 n * n ,其中的值在 [1, n2] 范围内。除了 a 出现 两次,b 缺失 之外,每个整数都 恰好出现一次 。

任务是找出重复的数字a 和缺失的数字 b

返回一个下标从 0 开始、长度为 2 的整数数组 ans ,其中 ans[0] 等于 aans[1] 等于 b

示例 1:

输入:grid = [[1,3],[2,2]]

输出:[2,4]

解释:数字 2 重复,数字 4 缺失,所以答案是 [2,4] 。

示例 2:

输入:grid = [[9,1,7],[8,9,2],[3,4,6]]

输出:[9,5]

解释:数字 9 重复,数字 5 缺失,所以答案是 [9,5] 。

提示:

  • 2 <= n == grid.length == grid[i].length <= 50
  • 1 <= grid[i][j] <= n * n
  • 对于所有满足1 <= x <= n * n 的 x ,恰好存在一个 x 与矩阵中的任何成员都不相等。
  • 对于所有满足1 <= x <= n * n 的 x ,恰好存在一个 x 与矩阵中的两个成员相等。
  • 除上述的两个之外,对于所有满足1 <= x <= n * n 的 x ,都恰好存在一对 i, j 满足 0 <= i, j <= n - 1 且 grid[i][j] == x 。

分析:

  由题可知,这道题只需要找出grid中重复的数字和一个确实的数据,只需要遍历一遍grid即可。思路:顶一个dp表,长度是n*n+1,初始化所有的数都是0,然后把下标为0的数标为-1,遍历grid,如果dp[i]等于0,则修改dp[i],否则i就是重复数字,最后遍历一遍dp,找等于0的下标,就是缺失的数据。具体代码如下:

class Solution:
    def findMissingAndRepeatedValues(self, grid: List[List[int]]) -> List[int]:
        n=len(grid)
        ls=[0]*(n**2+1)
        for i in grid:
            for j in i:
                if ls[j]==0:
                    ls[j]=j
                else:a=j
        ls[0]=-1
        for k in range(1,n**2+1):
            if ls[k]==0:
                b=k
        return [a,b]

总结:此题难度不大,代码可以顺利通过。还是那句话,题虽不难,但贵在坚持!

目录
相关文章
|
6月前
|
算法
刷题之Leetcode34题(超级详细)
刷题之Leetcode34题(超级详细)
50 0
|
6月前
|
算法
leetcode454刷题打卡
leetcode454刷题打卡
39 0
|
5月前
|
存储 vr&ar Python
力扣每日一题 6/5
力扣每日一题 6/5
44 3
|
1月前
【LeetCode-每日一题】移动零
【LeetCode-每日一题】移动零
26 1
|
5月前
力扣每日一题 5/29
力扣每日一题 5/29
31 3
|
5月前
力扣每日一题 6/3
力扣每日一题 6/3
30 3
|
5月前
力扣每日一题 6/2
力扣每日一题 6/2
32 3
|
5月前
力扣每日一题 6/8
力扣每日一题 6/8
29 3
|
5月前
|
JavaScript
力扣每日一题 5/26
力扣每日一题 5/26
36 2
|
6月前
刷题之Leetcode203题(超级详细)
刷题之Leetcode203题(超级详细)
32 0
刷题之Leetcode203题(超级详细)