leetcode 36. 有效的数独
由于工作原因,以后A题一般都使用Python,不得不说Python还挺方便的,作为一个脚本语言学好了,会省很多事情。
判断一个 9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。
- 数字
1-9
在每一行只能出现一次。 - 数字
1-9
在每一列只能出现一次。 - 数字
1-9
在每一个以粗实线分隔的3x3
宫内只能出现一次。
Code 1:
class Solution: def isValidSudoku(self, board): """ :type board: List[List[str]] :rtype: bool """ for i in range(9): for j in range(9): if board[i][j] == '.': board[i][j] = 0 else : board[i][j] = int(board[i][j]) flag = [0] * 10 ans = True for i in range(9): flag = [0] * 10 for j in range(9): if board[i][j] == 0: continue flag[board[i][j]]+=1 if flag[board[i][j]] > 1: ans = False flag = [0] * 10 for j in range(9): flag = [0] * 10 for i in range(9): if board[i][j] == 0: continue flag[board[i][j]] +=1 if flag[board[i][j]] > 1: ans = False for i in range(0,9,3): for j in range(0,9,3): flag = [0]*10 for m in range(3): for n in range(3): if board[i+m][j+n] == 0: continue flag[board[i+m][j+n]] +=1 if flag[board[i+m][j+n]] > 1: ans = False return ans
Code : 2
- 根据行列,可以得到子数独的索引 (row // 3) * 3 + col // 3
- Python字典,d.get(key, default) ,当没有这个键,或者键没有值时,使用get方法返回默认值,否则出错。
class Solution: def isValidSudoku(self, board): """ :type board: List[List[str]] :rtype: bool """ # init data rows = [{} for i in range(9)] columns = [{} for i in range(9)] boxes = [{} for i in range(9)] # validate a board for i in range(9): for j in range(9): num = board[i][j] if num != '.': num = int(num) box_index = (i // 3) * 3 + j // 3 rows[i][num] = rows[i].get(num, 0) + 1 columns[j][num] = columns[j].get(num, 0) + 1 boxes[box_index][num] = boxes[box_index].get(num, 0) + 1 # check if this value has been already seen before if rows[i][num] > 1 or columns[j][num] > 1 or boxes[box_index][num] > 1: return False return True
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
2017-01-20 Codeforces 758D Ability To Convert(区间DP)
2017-01-20 Codeforces 758C Unfair Poll
2017-01-20 Codeforces 758B Blown Garland
2017-01-20 Codeforces 758A Holiday Of Equality